文档章节

Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》

 懒骨头
发布于 2013/12/09 12:37
字数 1112
阅读 376
收藏 0

周末了,哲哲在旁边看《爸爸去哪》,骨头继续玩cocos2dx,


首先,如果你新加了CPP和H文件,记得修改项目目录下的proj.android\jni文件夹的Android.mk文件。

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. LOCAL_SRC_FILES :hellocpp/main.cpp \  
  2.                    ../../Classes/AppDelegate.cpp \  
  3.                    ../../Classes/HelloWorldScene.cpp \  
  4.                    ../../Classes/Welcome.cpp \  
  5.              ../../Classes/About.cpp  

VS2012里一直跑的OK,可放在android真机上运行就报错了。

11-22 21:44:53.391: E/cocos2d-x assert(4257): D:\Java\cocos2d-x-2.2/cocos2dx/base_nodes/CCNode.cpp function:addChild line:627

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">真机上新加的类一闪而过,于是仔细看了看,init里只有一个label,换成Sprite也不行,看来不是控件的问题。后来找到是</span><span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">init没有返回true。</span>  

错误越诡异,原因越低级。

而且骨头就喜欢遇到新bug,经验花花的张。

(Pad里,爸爸们跟孩子们在钓鱼,骨头最喜欢钓鱼了。。。)


又来一个bug!控件不能重复添加

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Assert failed: child already added. It can't be added again  

好的下面添加个背景图:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. // 背景  
  2. CCSprite *bg=CCSprite::create("game_bg.jpg");  
  3. //bg->setPosition(ccp(0,0));//setAnchorPoint是以左下角贴图,SetPosition是以中心点贴图  
  4. bg->setAnchorPoint(ccp(0,0));  
  5. this->addChild(bg);  

顺便列点相当常用的快捷键:(尤其是删除行,提示,注释)

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Ctrl+Shift+L: 删除当前行  
  2. Ctrl+Shift+U: 全部变为大写  
  3. Ctrl+U: 全部变为小写  
  4. Ctrl+K,I: 快速信息  
  5. Ctrl+K,C: 注释选定内容  
  6. Ctrl+K,U: 取消选定注释内容  
  7. F12: 转到所调用过程或变量的定义  
  8. CTRL + - 向后定位  
  9. CTRL + SHIFT + - 向前定位  


好了,加个hero吧,网络素材,谢谢作者

加个帧动画

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. void About::addHero()  
  2. {  
  3.     CCSprite *hero=CCSprite::create("hero/20005_待机_1.png");  
  4.     hero->setPosition(ccp(100,100));  
  5.     this->addChild(hero);  
  6.   
  7.     CCAnimation *animation = CCAnimation::create();    
  8.     //从本地文件系统中加载图片文件到CCSpriteFrame中区,然后添加到CCAnimation中    
  9.     for (int i = 1; i <= 7; i+=2)    
  10.     {    
  11.         char szImageFileName[128] = {0};    
  12.         sprintf(szImageFileName, "hero/20005_待机_%d.png", i);    
  13.         animation->addSpriteFrameWithFileName(szImageFileName);      
  14.     }    
  15.     animation->setDelayPerUnit(0.5f / 4.0f);     
  16.     animation->setLoops(-1);  
  17.        
  18.     CCAnimate *action  = CCAnimate::create(animation);    
  19.     hero->runAction(action);  // 运行精灵对象   
  20. }  

然后添加三个按钮,来测试CCSprite也就是主角的各种动作

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. void About::addBtn()  
  2. {  
  3.     CCSize vSize=CCDirector::sharedDirector()->getVisibleSize();  
  4.     CCPoint origin=CCDirector::sharedDirector()->getVisibleOrigin();  
  5.     // add some btns  
  6.     CCMenuItemImage *btn1 = CCMenuItemImage::create("about/clickme.png","about/clickme-down.png",this,menu_selector(About::clickCallBack1));  
  7.     CCMenuItemImage *btn2 = CCMenuItemImage::create("about/clickme.png","about/clickme-down.png",this,menu_selector(About::clickCallBack2));  
  8.     CCMenuItemImage *btn3 = CCMenuItemImage::create("about/clickme.png","about/clickme-down.png",this,menu_selector(About::clickCallBack3));  
  9.     btn1->setPosition(ccp(vSize.width-btn1->getContentSize().width/2,btn1->getContentSize().height));  
  10.     btn2->setPosition(ccp(vSize.width-btn1->getContentSize().width/2,btn1->getContentSize().height*2));  
  11.     btn3->setPosition(ccp(vSize.width-btn1->getContentSize().width/2,btn1->getContentSize().height*3));  
  12.     btn1->setScale(0.5);  
  13.     btn2->setScale(0.5);  
  14.     btn3->setScale(0.5);  
  15.     CCMenu *menu=CCMenu::create(btn1,btn2,btn3,NULL);  
  16.     menu->setPosition(CCPointZero);  
  17.     this->addChild(menu);   
  18. }  

点击按钮播放动画时报错,原因未知T.T

还有,如果在h文件里定义CCSprite,记得加上USING_NS_CC; 

动作测试ok之后,发射时主角播放动画,并且怪物换了个图,子弹还是散弹:好幼稚哈哈,待骨头慢慢学来。。。

也就这样了,最多改个背景图,给主角加个血槽,让怪物通过帧动画飞过来,这些效果都是雷同的。

ok,结束,骨头打算找个不错的例子分析下。



 ------------------- 飞船起飞--------------------  

Cocos2dx游戏开发系列笔记10:解刨《战神传说》

Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应

Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的

Cocos2dx游戏开发系列笔记7:一个简单的跑酷游戏《萝莉快跑》的消化(附下载)

Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上

Cocos2dx游戏开发系列笔记5:继续润色《忍者飞镖射幽灵》

Cocos2dx游戏开发系列笔记4:怎样新加一个Scene类?

Cocos2dx游戏开发系列笔记3:牛刀小试->忍者飞镖射幽灵的Demo

Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么

Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin

-------------------- 飞船降落-------------------- 


最后,骨头介绍一下陪在身边的哲哲(右边就是低调的哲哲)

哲哲,小名 YIYI ,手工爱好者,文艺范,手艺人,《YiYiの妙舍》创始人,很有自己想法。


© 著作权归作者所有

共有 人打赏支持
粉丝 14
博文 11
码字总数 14771
作品 1
青岛
私信 提问
Cocos2dx游戏开发系列笔记4:怎样新加一个Scene类?

有点晚了,眼睛开始痒痒了,赶紧记录点东西 刚请教了sw同学,跟听D也扯了会,苦命的孩子,今晚他们游戏发新版,前端必须加班,骨头好是羡慕。。。 前几个笔记的例子都是zai一个Scene.cpp里完...

懒骨头
2013/12/09
0
0
Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应

上节说到cygwin下成功编译出so文件,下面我们要把游戏运行在android上。 开始干活! 其实步骤可以参考 Cocos2dx游戏开发系列笔记6:怎样让《萝莉快跑》的例子运行在vs和手机上 1 用eclipse打...

懒骨头
2013/12/09
0
0
Cocos2dx游戏开发系列笔记1:一个崭新的开始,cocos2dx2.2+ndkr9+Cygwin

Android开发者做cocos2dx最大的绊脚石,不是c++,而是环境的搭建... 骨头也是费了半天劲才终于在真机上看到了那个类似猕猴桃的头,这里简单记录一下。 环境:(算比较新了2013.11.17) coco...

懒骨头
2013/12/09
0
0
Cocos2dx游戏开发系列笔记3:牛刀小试->忍者飞镖射幽灵的Demo

就是这个例子,应该很简单,主要用到的有:精灵的移动,触摸,碰撞检测。 赶紧搞定,待会还要陪哲哲来几局爱消除。 首先在Scene初始化方法里添加精灵: CCSprite *player =CCSprite::create...

懒骨头
2013/12/09
0
0
Cocos2dx游戏开发系列笔记2:一个刚创建的cocos2dx中的demo里都有什么

烦人的环境终于ok了,改了改文本,换了换图片资源,还是能在手机里运行。ok,关了Eclipse,去vs中看看吧。 虽然是根老骨头了,但还真没怎么用C++,以前接触过点Java的开发框架,估计大差不差...

懒骨头
2013/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式锁的实现

redis实现分布式锁 方法1:普通实现方案 实现方式: 使用指令: set key 随机值 ex 5 nx.意思是当key不存在的时候设置key. 如果key存在返回OK,否则返回nil. 实现过程: 1.执行命令set key true ...

grace_233
22分钟前
1
0
解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题

关于解决CKEditor 4 富文本编辑器在图片组件无法显示[上传]选项卡的相关问题。 本文可能会对以下现象得以解决: 图片上传组件,没有 [上传] 选项卡。 资源无法加载 [imgupload] ( Uncaught E...

Eller
26分钟前
0
0
限制php解析、user_agent、php相关配置

11月20日任务 11.28 限定某个目录禁止解析php 11.29 限制user_agent 11.30/11.31 php相关配置 11.28、限定某个目录禁止解析php 核心配置文件内容 <Directory /data/wwwroot/www.123.com/upl...

zgxlinux
30分钟前
1
0
博客园首页新随笔联系订阅管理 随笔

注解Annotation实现原理与自定义注解例子 什么是注解? 对于很多初次接触的开发者来说应该都有这个疑问?Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的...

onedotdot
48分钟前
4
1
Spring boot + redis 用RedisTemlate实现简单的String key value 操作

springboot集成redis, 简单的key, value缓存操作. 1. application-local.properties # redis on local#spring.redis.port=6379#spring.redis.host=localhost#spring.redis.password=......

园领T
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部