Cocos2d入门--3--小球运动
本章直接上源代码。内容不难,主要就是
HelloWorldScene.h文件:
1 #ifndef __HELLOWORLD_SCENE_H__ 2 #define __HELLOWORLD_SCENE_H__ 3 4 #include "cocos2d.h" 5 6 class HelloWorld : public cocos2d::Layer 7 { 8 protected: 9 float _angle; 10 cocos2d::Vec2 _vec; 11 public: 12 static cocos2d::Scene* createScene(); 13 14 virtual bool init(); 15 16 // a selector callback 17 void menuCloseCallback(cocos2d::Ref* pSender); 18 19 // implement the "static create()" method manually 20 CREATE_FUNC(HelloWorld); 21 22 virtual void update(float dt); 23 private: 24 //获取屏幕可视范围 25 float width_L; 26 float width_R; 27 cocos2d::DrawNode* ball; 28 }; 29 30 #endif // __HELLOWORLD_SCENE_H__
HelloWorldScene.cpp文件:
1 // on "init" you need to initialize your instance 2 bool HelloWorld::init() 3 { 4 ////////////////////////////// 5 // 1. super init first 6 if ( !Layer::init() ) 7 { 8 return false; 9 } 10 11 Size visibleSize = Director::getInstance()->getVisibleSize(); 12 Vec2 origin = Director::getInstance()->getVisibleOrigin(); 13 width_L = origin.x; 14 width_R = origin.x + visibleSize.width; 15 16 ball = DrawNode::create(); 17 ball -> drawDot(Vec2(0, 0), 4, Color4F(1.0f, 1.0f, 1.0f, 1.0f)); 18 19 addChild(ball); 20 ball -> setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2); 21 22 //action相关的运动我们一般不是用来做游戏的运动,一般用来做游戏的变化效果。因为action不能很好的用来表现出游戏的效果 23 // dot -> runAction(RepeatForever::create(MoveBy::create(0.2, _vec*100))); 24 // 25 scheduleUpdate(); 26 return true; 27 } 28 29 void HelloWorld::update(float dt){ 30 ball -> setPositionX(ball->getPositionX()+5); 31 if (ball->getPositionX()<width_L-ball->getContentSize().width/2 32 || ball->getPositionX()>width_R+ball->getContentSize().width/2) { 33 ball->setPositionX(-ball->getContentSize().width/2); 34 } 35 }
然后实现的效果: