初学试试看cocos2dx的TestCPP框架(10)---TouchesTest
来源:互联网 发布:快牙zapya软件 编辑:程序博客网 时间:2024/04/29 17:06
一、PongScene继承自TestScene,这个类里面有3个方法,但是当前代码来看,MainMenuCallback这个虚继续类有点多余,因为他仅调用一下父类的MainmenuCallback。
在构造里面,添加一个PontLayer层到场景中,这里注意一下。
PongLayer *pongLayer = new PongLayer();//PongLayer::create(); addChild(pongLayer); pongLayer->release();
在cocos2dx里面,继承自object的类,new出来的数据,可以用release释放,这个层已经加进了场景里面,可以释放掉了。
runThisTest函数里面,仅是调用CCDirector::sharedDirector()->releaseScene(this);替换一下场景。
二、PongLayer继承自CCLayer,这个类有3个私有成员,Ball * m_ball; CCArray * m_paddles; CCPoint m_ballStringVelocity;分别记录着球,板的位置,开始的速度。
构造函数里面先利用CCTextureCache::sharedTextureCache()->addImage(s_Ball);读取到CCTexture2D里面,然后创建,设置位置,球的话设置一下速度setVolecity。
最后调用一下回调函数,schedule(schedule_selector(PongLayer::doStep));
doStep里面,每一帧调用小球调用move移动小球一点,然后用CCARRAY_FOREACH循环调用collideWithPaddle测试是否碰撞,假如球运动到屏幕上面或者下面,调用
resetAndScoreBallForPlayer(xxx)重新开始。然后调用draw重画界面。
resetAndScoreBallForPlayer里面重新设置了球的初速度,位置。速度的-的。
三、Paddle继承了CCTargetedTouchDelegate,因为Paddle要响应触摸,所以在OnEnter里面注册一下
void Paddle::onEnter(){ CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, true); CCSprite::onEnter();}
退出的时候再取消掉。
void Paddle::onExit(){ CCDirector* pDirector = CCDirector::sharedDirector(); pDirector->getTouchDispatcher()->removeDelegate(this); CCSprite::onExit();}
这个类通过initWithTexture来构造,CCSprite::initWithTexture来构造,这个需要手动释放,如果是调用create之类的,会自动调用autorelease来释放内存。同时设置了当前状态为没有拖动状态,kPaddleStateUngrabbed。
同时重载了这三个函数来处理响应触摸动作。
virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event); virtual void ccTouchMoved(CCTouch* touch, CCEvent* event); virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);
他们利用CCLayer继续自CCNode的converTouchToNodeSpaceAR(touch)获取当前接触的点,然后用CCRect的containsPoint来判断是否点击在
这个Paddle上面。鼠标点击拖动的时候会调用Moved。
四、Ball类记录着速度m_velocity。这个实质是一个点,数据越大,移动就越快,他设置位置的方式是
this->setPosition( ccpAdd(getPosition(), ccpMult(m_velocity, delta)) );
如果碰到2边的话, m_velocity.x *= -1;一下就转换为相反的方向。
碰撞检查里面的collideWithPaddle仅是一些逻辑,花点时间就能看懂了。
- 初学试试看cocos2dx的TestCPP框架(10)---TouchesTest
- 初学试试看cocos2dx的TestCPP框架(1)
- 初学试试看cocos2dx的TestCPP框架(2) --CCApllication
- 初学试试看cocos2dx的TestCPP框架(3)--scene
- 初学试试看cocos2dx的TestCPP框架(4)---CCSkewTo、CCSkewBy
- 初学试试看cocos2dx的TestCPP框架(5)---sceneTest
- 初学试试看cocos2dx的TestCPP框架(6)---AtlasTestScene(LabelTest)
- 初学试试看cocos2dx的TestCPP框架(7)---AtlasTestScene(LabelTest)
- 初学试试看cocos2dx的TestCPP框架(8)---AtlasTestScene(LabelTest)
- 初学试试看cocos2dx的TestCPP框架(9)---TextInputTestScene
- 初学试试看cocos2dx的TestCPP框架(11)---MenuTestScene
- 初学试试看cocos2dx的TestCPP框架(2) --CCApllication
- [cocos2dx]TestCpp框架源码分析
- Android手机上跑起cocos2dx TestCpp
- Cocos2dx中的TestCPP运行Box2dTest
- 生成cocos2dx 2.2.6 TestCpp例子 android工程遇到的问题(2)
- 生成cocos2dx 2.2.6 TestCpp例子 android工程遇到的问题(1)
- 生成cocos2dx 2.2.6 TestCpp例子 android工程遇到的问题(3)
- C++模板类的编译问题
- Java异常处理机制以及try-catch-finally-return执行顺序
- VC/MFC如何设置对话框背景颜色
- Flex结合
- TCHAR与C语言string.h的对应关系
- 初学试试看cocos2dx的TestCPP框架(10)---TouchesTest
- 设计模式综合实例分析之数据库同步系统(一)
- 第一次负责项目的总结
- 读后感:Mao: a biography-- 时势造英雄
- linux中的C里面使用pthread_mutex_t锁
- (国)电磁放面的内容 第一二章
- IOC框架
- final_抽象类_模版模式_接口
- 安装ubuntu