关于cocos2d-x2.2.3中定时器<update>的详细解释和使用
2014-08-14 12:21
513 查看
废话不多说了。。在网上找些 全面的介绍cocos2dx 定时器文章 还真的很难 我先来个简单的把
我直接上.h文件的代码了 都有注释的
下面 我贴上.cpp的代码。。都有注释的。大家可以仔细对着看点。。
转载请标明出处尊重原作者 http://blog.csdn.net/crazyspopcorn_qian
我直接上.h文件的代码了 都有注释的
#ifndef __up_H__ #define __up_H__ #include "cocos2d.h" #include "cocos-ext.h" USING_NS_CC; USING_NS_CC_EXT; class up : public CCLayer { public: static CCScene*scene(); CREATE_FUNC(up); bool init(); void update(float dt); //定义一个精灵 CCSprite* _sprite; //设置一个处理函数 void Handle(CCObject* sender); // void MyScheduleFunc(float dt); // int _direction; }; #endif
下面 我贴上.cpp的代码。。都有注释的。大家可以仔细对着看点。。
#include "up.h" CCScene *up::scene() { CCScene *scene = CCScene::create(); up *layer = up::create(); scene->addChild(layer); return scene; } bool up::init() { CCLayer::init(); CCSize winSize = CCDirector::sharedDirector()->getWinSize(); CCPoint center = ccp(winSize.width / 2, winSize.height / 2); // 让帧循环调用this->update(float dt)函数//默认的 scheduleUpdate(); //让帧循环调用指定的函数 //时间是 1/60秒 帧的循环 schedule(schedule_selector(up::MyScheduleFunc)); //自己控制 偏移 x y //定时器 每2秒动一下 schedule(schedule_selector(up::MyScheduleFunc, 2.0f)); //重复8次。第一次延迟3秒,之后每隔2秒调用一次 //有限次数的定时器 schedule(schedule_selector(up::MyScheduleFunc),2.0f,8,3.0f); //调度一次 5秒钟之后调用一次定时器 scheduleOnce(schedule_selector(up::MyScheduleFunc),5.0f); _sprite = CCSprite::create("green_edit.png"); addChild(_sprite); //居中 _sprite->setPosition(center); //设置上下左右 CCMenuItemFont *up = CCMenuItemFont::create("up",this,menu_selector(up::Handle)); CCMenuItemFont *down = CCMenuItemFont::create("down", this, menu_selector(up::Handle)); CCMenuItemFont *right = CCMenuItemFont::create("right", this, menu_selector(up::Handle)); CCMenuItemFont *left = CCMenuItemFont::create("left", this, menu_selector(up::Handle)); CCMenu *menu = CCMenu::create(up, down, left, right, NULL); addChild(menu); //让menu对其 //格式对齐 // menu->alignItemsHorizontally(); menu->alignItemsVertically(); up->setTag(1); down->setTag(2); left->setTag(3); right->setTag(4); _direction = 0; //一开始那儿也不去 return true; } void up::update(float dt) { //如果 x轴和y轴一起加的话。就是斜着走 //如果等于 1 就UP if (_direction == 1) { // dt *50 代表一秒钟 移动50个像素 //这句话的意思是每秒移动50个像素。然后重新把这个坐标设置成精灵的新坐标 _sprite->setPositionY(_sprite->getPositionY() + dt * 50); //如果要实现不停的走。。就必须要把下面这个+ 4 删除掉 //_direction += 4; } if (_direction == 2) { // dt *50 代表一秒钟 移动50个像素 //这句话的意思是每秒移动50个像素。然后重新把这个坐标设置成精灵的新坐标 _sprite->setPositionY(_sprite->getPositionY() - dt * 500); _direction += 4; } if (_direction == 3) { // dt *50 代表一秒钟 移动50个像素 //这句话的意思是每秒移动50个像素。然后重新把这个坐标设置成精灵的新坐标 _sprite->setPositionX(_sprite->getPositionX()+ dt * 500); _direction += 4; } if (_direction == 4) { // dt *50 代表一秒钟 移动50个像素 //这句话的意思是每秒移动50个像素。然后重新把这个坐标设置成精灵的新坐标 _sprite->setPositionX(_sprite->getPositionX() - dt * 500); _direction += 4; } } void up::Handle(CCObject* sender) { CCNode *node = (CCNode *)sender; //tag记录按那个键 tag给update用 _direction = node->getTag(); //停止定时器函数 指定停止XXX函数 //unschedule(schedule_selector(up::XXXX)); //至停止update 函数 unscheduleUpdate(); //停止所有定时器的调度 unscheduleAllSelectors(); } void up::MyScheduleFunc(float dt) { //自己里面内容发挥想象 }
转载请标明出处尊重原作者 http://blog.csdn.net/crazyspopcorn_qian
相关文章推荐
- 关于<#eval>的使用详解
- 关于>&2、2>&1等重定向的详细解释!
- quick-cocos2d-x的热更新机制实现<四>update包(lua)(上)
- 关于List<T> :Distinct 和 OrderBy 、GroupBy使用简例
- 关于cocos2d在Mac上用Jni引入<jni.h>头文件找不到的问题
- 在C#.NET中,关于<%%>使用方法
- Cocos2d-x android使用onKeyDown监听返回键实现二次返回退出<转载>
- quick-cocos2d-x的热更新机制实现<四>update包(lua)(中)
- 关于使用注解的Spring配置文件的配置<context:annotation-config/>&&<context:component-scan base-package=”XX.XX”/>
- 关于>&2、2>&1等重定向的详细解释
- 关于spring 3.0.5的<mvc:resources> 标签的使用
- 关于>&2、2>&1等重定向的详细解释
- HTML5-关于如何使用<input>tags~汇总
- 关于如何使用three.js的小教程<一>
- 关于jsp中使用 <jsp:userBean/> <jsp:setProperty/> <jsp:getProperty/>
- 关于Unity 获得和使用GetComponent<MeshFilter>().mesh时的心得
- 关于怎样使用three.js的小教程<一>
- 关于使用<s:property value="">形式取得 数据库图片地址的注意事项
- <cocos2d-x for wp7>使用cocos2d-x制作基于Tile地图的游戏:不一样的战斗(回合制战斗)(四)
- Cocos2d-x3.0模版容器具体解释之二:cocos2d::Map<K,V>