我看的极客学院上的视频,于是自己也动手实现一下,毕竟自己才刚开始学习cocos2d-x
看代码把:
这个是HelloWorld类,继承Layercolor
class HelloWorld : public cocos2d::Layercolor{public: static cocos2d::Scene* createScene(); virtual bool init(); virtual voID update(float dt);//这里的update函数是重写了scheduleUpdate里面的update函数,一开始写成了updata,于是小球根本就不会动,这个函数的名字不能错的 voID menuCloseCallback(cocos2d::Ref* pSender); CREATE_FUNC(HelloWorld);private: cocos2d::Sprite * ball;//这里是一个小球};
这是init函数
bool HelloWorld::init(){ ////////////////////////////// // 1. super init first if (!Layercolor::initWithcolor(color4B(255,255,255))) { return false; } Size visibleSize = Director::getInstance()->getVisibleSize(); Vec2 origin = Director::getInstance()->getVisibleOrigin(); //auto b = Sprite::create("p3.png"); //b->setposition(200,200); //addChild(b);// addChild(b);//一开始是这样子的,这样的代码可以创建出一个小球出来 ball = Sprite::create("p2.png"); addChild(ball); ball->setposition(200,200); //b->runAction(MoveBy::create(1,Vec2(100,0))); //b->runAction(RepeatForever::create(MoveBy::create( 1,0)))); //这里的runAction也可以让小球运动,但是想要精确的控制小球的运动,还是需要scheduleUpdate函数来实现 scheduleUpdate();//我们需要自己重写update函数来达到自己想要的目的 return true;}
我们自己重写update函数达到自己的目的
主要是为了小球的越界返回原点处理
voID HelloWorld::update(float dt){ ball->setpositionX(ball->getpositionX() + 5);//每一帧移动5像素 Size visibleSize = Director::getInstance()->getVisibleSize(); //这里是得到可视窗口的大小 if (ball->getpositionX() > (visibleSize.wIDth + ball->getContentSize().wIDth / 2)) {//如果要出界了,那我们就要把小球返回原来的初始位置 ball->setpositionX(ball->getContentSize().wIDth/2); }}总结
以上是内存溢出为你收集整理的cocos2d-x 让小球滚动起来全部内容,希望文章能够帮你解决cocos2d-x 让小球滚动起来所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)