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

ε祈祈猫儿з 提交于 2019-11-29 05:04:51

周末了,哲哲在旁边看《爸爸去哪》,骨头继续玩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の妙舍》创始人,很有自己想法。


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!