cocos2d-x 入门游戏:许特尔图_3 of 4

cocos2d-x 入门游戏:许特尔图_3 of 4,第1张

概述 5. 触摸 在初始化函数中:     setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne);   在.h中声明: bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);   在.cpp中实现: bool LayerGame::ccTouchBegan(CCTouch *pTouch,  

5.触摸

在初始化函数中:

settouchEnabled(true);

settouchMode(kCCtouchesOneByOne

在.h中声明:

boolcctouchBegan(CCtouch*ptouch,CCEvent*pEvent);在.cpp中实现:

LayerGame::cctouchBegan(*ptouch,255); Font-size:9.5pt">pEvent)

{

staticinttouchOrder=1;for(i=0;i<_rank*_rank;i++){//注意boundingBox()前面被括号括起来了,是个整体if(((CardItem*)allCards->objectAtIndex(i))->boundingBox().containsPoint(ptouch->getLocation())){//只有当前的触摸次序与数字卡的序号相等,才能继续下去(touchOrder==((*)allCards->objectAtIndex(i))->getIDx())touchOrder++;((*)allCards->objectAtIndex(i))->removeFromParentAndCleanup(true);}(touchOrder==_rank*_rank+1)cclog("youWin"touchOrder=1;//重置触摸次序CCScene*scene=GameOver::scene(_rank,passtime);CCDirector::sharedDirector()->replaceScene(scene);returnfalse;

6.结束场景:

结束场景由

1.显示成绩的标签LabelTTF

2.返回主场景的Redo菜单

3.返回开始场景的Back菜单

组成

结束场景接收2个参数:

1.难度等级rank

2.完成时间passtime

Passtime不再它用

Rank还要返回,在.h中设置为全局

int_rank;

参数传递与保存:

class:publiccclayer

:*scene(rank,floatt);//CREATE_FUNC(GameOver)*create(boolinit(voIDredoCallBack(CCObject*);backCallBack(*);

CCScene*GameOver::scene(rankfloatt{。。。。。。returnscene;}

::create(*pRet=new;pRet;::init(_rank=

当前还没有开定时器进行计时,先把时间显示的放一放,把菜单项先做掉:

.h

voIDredoCallBack(CCObject*);backCallBack(*);

.cpp

CcmenuItem*redo=CcmenuItemFont::create("Redo");redo->setTarget(this,menu_selector(::redoCallBack));CcmenuItem*back="Back");back->setTarget(::backCallBack));Ccmenu*menu=::create(redo,back,255); Font-size:9pt">NulLmenu->alignItemsHorizontallyWithpadding(30);addChild(menu);

::redoCallBack(*)CCDirector::sharedDirector()->replaceScene(::scene(_rank));::backCallBack(GameStart::scene());}

7.定时器与计时

主场景,在.h

mySchedule(delta);passtime;

.cpp中,调用和实现

passtime=0.0;

schedule(schedule_selector(

ayerGame::mySchedule),0.1);

cclabelTTF*ttf=::create("0.00","Arial"

addChild(ttf,1313);ttf->setposition(ccp(winSize.wIDth/2+50,255); Font-size:8pt">.height-50));

注意:ttfTag

voIDLayerGame::mySchedule(floatdelta){passtime+=;

CCString*str=

::createWithFormat("%0.2f"*ttf=(*)getChildByTag(1313);ttf->setString(str->getCString());

8.中文显示与声音

中文显示在cocos2d-x中不支持,要想显示中文,其中一种方法是使用CCDictionary。即自己写一个.xml文件,Value是中文,再通过Key拿中文

CCDictionary*dic=::createWithContentsOffile("chinese.xml"CCString*str1=(*)dic->objectForKey("simple"*str2=("normal"*str3=("hard"*str4=("quit");

*simple=CcmenuItemFont::create(str1->getCString());simple->setcolor(ccGREEN);

*normal=::create(str2->getCString());

.......

声音要使用到cocosdention

VS中这个是没什么好说的

但在linux中会链接出错:

必须在Makefile文件中-lcocosdenshion

SHAREDliBS+=-lcocos2d-lcocosdenshion

init()中预加载:

CocosDenshion::SimpleAudioEngine::sharedEngine()->preloadEffect("click.wav"

CCtouchBegan()中:如果点击正确的数字,发出声音:if(touchOrder==((CardItem*)allCards->objectAtIndex(i))->getIDx())

。。。::sharedEngine()->playEffect(。。。}

总结

以上是内存溢出为你收集整理的cocos2d-x 入门游戏:许特尔图_3 of 4全部内容,希望文章能够帮你解决cocos2d-x 入门游戏:许特尔图_3 of 4所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1066780.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存