您的位置:首页 > 移动开发 > Cocos引擎

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

2013-12-09 00:00 597 查看
周末了,哲哲在旁边看《爸爸去哪》,骨头继续玩cocos2dx,

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

[html]
view plain
copy







LOCAL_SRC_FILES := hellocpp/main.cpp \

../../Classes/AppDelegate.cpp \

../../Classes/HelloWorldScene.cpp \

../../Classes/Welcome.cpp \

../../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







<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







Assert failed: child already added. It can't be added again

好的下面添加个背景图:



[cpp]
view plain
copy







// 背景

CCSprite *bg=CCSprite::create("game_bg.jpg");

//bg->setPosition(ccp(0,0));//setAnchorPoint是以左下角贴图,SetPosition是以中心点贴图

bg->setAnchorPoint(ccp(0,0));

this->addChild(bg);

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

[html]
view plain
copy







Ctrl+Shift+L: 删除当前行

Ctrl+Shift+U: 全部变为大写

Ctrl+U: 全部变为小写

Ctrl+K,I: 快速信息

Ctrl+K,C: 注释选定内容

Ctrl+K,U: 取消选定注释内容

F12: 转到所调用过程或变量的定义

CTRL + - 向后定位

CTRL + SHIFT + - 向前定位

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



加个帧动画

[cpp]
view plain
copy







void About::addHero()

{

CCSprite *hero=CCSprite::create("hero/20005_待机_1.png");

hero->setPosition(ccp(100,100));

this->addChild(hero);

CCAnimation *animation = CCAnimation::create();

//从本地文件系统中加载图片文件到CCSpriteFrame中区,然后添加到CCAnimation中

for (int i = 1; i <= 7; i+=2)

{

char szImageFileName[128] = {0};

sprintf(szImageFileName, "hero/20005_待机_%d.png", i);

animation->addSpriteFrameWithFileName(szImageFileName);

}

animation->setDelayPerUnit(0.5f / 4.0f);

animation->setLoops(-1);

CCAnimate *action = CCAnimate::create(animation);

hero->runAction(action); // 运行精灵对象

}

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



[cpp]
view plain
copy







void About::addBtn()

{

CCSize vSize=CCDirector::sharedDirector()->getVisibleSize();

CCPoint origin=CCDirector::sharedDirector()->getVisibleOrigin();

// add some btns

CCMenuItemImage *btn1 = CCMenuItemImage::create("about/clickme.png","about/clickme-down.png",this,menu_selector(About::clickCallBack1));

CCMenuItemImage *btn2 = CCMenuItemImage::create("about/clickme.png","about/clickme-down.png",this,menu_selector(About::clickCallBack2));

CCMenuItemImage *btn3 = CCMenuItemImage::create("about/clickme.png","about/clickme-down.png",this,menu_selector(About::clickCallBack3));

btn1->setPosition(ccp(vSize.width-btn1->getContentSize().width/2,btn1->getContentSize().height));

btn2->setPosition(ccp(vSize.width-btn1->getContentSize().width/2,btn1->getContentSize().height*2));

btn3->setPosition(ccp(vSize.width-btn1->getContentSize().width/2,btn1->getContentSize().height*3));

btn1->setScale(0.5);

btn2->setScale(0.5);

btn3->setScale(0.5);

CCMenu *menu=CCMenu::create(btn1,btn2,btn3,NULL);

menu->setPosition(CCPointZero);

this->addChild(menu);

}

点击按钮播放动画时报错,原因未知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の妙舍》创始人,很有自己想法。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐