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));
注意:ttf的Tag | 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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)