标签:cocos2d-x3.0 c++ 实例 跑酷 新手入门
这一步当中,我们给PlayScene中 添加两个按钮,让主角Jump and Crouch,按钮功能如下:
Jump按钮,按下主角跳起来
Crouch按钮,按下主角下蹲,一直按着一直蹲,松开之后主角才站起来
这里用按钮包含头文件"cocos-ext.h"会遇到一点点问题,后面给出详细解决方法:
首先PlayScene.h中要包含头文件:
<span style="font-size:14px;">#include "cocos-ext.h" USING_NS_CC_EXT;</span>然后添加函数:
//Jump void createJumpButton(); void jumpEvent(Ref* pSender,Control::EventType event); //Crouch void createCrouchButton(); void crouchDown(Ref* pSender,Control::EventType event); void crouchUp(Ref* pSender,Control::EventType event);
这里先解释一下,Crouch 有两个事件,我们在按钮中,要添加两个按钮事件,一个是按下,那么人物蹲下,然后按钮松开,人物又起来,两个事件,两个回调函数
然后实现:
void PlayScene::createJumpButton(){
auto visibleSize = Director::getInstance()->getVisibleSize();
auto jumpLabel = Label::create("Jump","Arail",30);
auto norBtn = Scale9Sprite::create("norBtn.png");
auto lightBtn = Scale9Sprite::create("lightBtn.png");
auto jumpBtn = ControlButton::create(jumpLabel,norBtn);
jumpBtn->setPosition(visibleSize.width-80,130);
jumpBtn->setBackgroundSpriteForState(lightBtn,Control::State::HIGH_LIGHTED);
jumpBtn->addTargetWithActionForControlEvents(
this,
cccontrol_selector(PlayScene::jumpEvent),
Control::EventType::TOUCH_DOWN);
this->addChild(jumpBtn);
}
void PlayScene::jumpEvent(Ref* pSender,Control::EventType event){
SimpleAudioEngine::sharedEngine()->playEffect("jump.mp3");
m_runner->Jump();
}
void PlayScene::createCrouchButton(){
auto visibleSize = Director::getInstance()->getVisibleSize();
auto crouchLabel = Label::create("Crouch","Arail",30);
auto norBtn = Scale9Sprite::create("norBtn.png");
auto lightBtn = Scale9Sprite::create("lightBtn.png");
auto crouchBtn = ControlButton::create(crouchLabel,norBtn);
crouchBtn->setPosition(visibleSize.width-100,80);
crouchBtn->setBackgroundSpriteForState(lightBtn,Control::State::HIGH_LIGHTED);
//按钮按下
crouchBtn->addTargetWithActionForControlEvents(
this,
cccontrol_selector(PlayScene::crouchDown),
Control::EventType::TOUCH_DOWN);
//按钮松开
crouchBtn->addTargetWithActionForControlEvents(
this,
cccontrol_selector(PlayScene::crouchUp),
Control::EventType::TOUCH_UP_INSIDE);
this->addChild(crouchBtn);
}
void PlayScene::crouchDown(Ref* pSender,Control::EventType event){
m_runner->Crouch();
m_runner->setPosition(runner_posX,ground_hight+m_runner->getCrouchSize().height/2);
SimpleAudioEngine::sharedEngine()->playEffect("crouch.mp3");
}
void PlayScene::crouchUp(Ref* pSender,Control::EventType event){
//否则,在跳起来的时候,点击crouch 松开之后,状态就会变成running
if(m_runner->getState() == crouch){
m_runner->stopAllActions();
m_runner->Run();
m_runner->setPosition(runner_posX,ground_hight+m_runner->getRunJumpSize().height/2);
}
}
然后在Runner.cpp中的init 函数中,还要记得
this->scheduleUpdate();,因为我们需要在update中判断起跳到最高点下落
然后在 PlayScene 的init函数也要添加 两个create按钮函数
那么生成,然后这里就会遇到问题:
无法打开包括文件:“extensions/ExtensionMacros.h”:
那么这里我们需要在项目上右键到属性,【配置属性】->【C/C++】->【常规】->【附加包含目录】如图:
在最下面添加:$(EngineRoot)
然后同样在【连接器】->【输入】中添加libExtensions.lib 如图:
然后重新生成,那么这里。。可能会有的小伙伴任然遇到问题 说libExtension.lib 有问题。。。关于这个问题解释起来我也不是很清楚,但是后来找到解决方法,如果遇到这个问题,那么就需要在这里下载
libExtension.lib(不用积分)然后把它直接放在 [项目的目录下] / proj.win32 / Debug.win32中,然后就可以了。那么这个问题应该不是全部都有,有的话可以用我给的方法解决,亲测!!!我想应该有别的方法,如果有知道的麻烦告诉我一下,不胜感激
再次重新生成,终于可以看到效果:
好啦,后面要开始准备金币和岩石阻碍啦。。。
个人愚昧观点,欢迎指正与讨论
cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--按钮控制主角Jump&Crouch,布布扣,bubuko.com
cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--按钮控制主角Jump&Crouch
标签:cocos2d-x3.0 c++ 实例 跑酷 新手入门
原文地址:http://blog.csdn.net/zyy173533832/article/details/38264861