cocos2d-x 让小球滚动起来

前端之家收集整理的这篇文章主要介绍了cocos2d-x 让小球滚动起来前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我看的极客学院上的视频,于是自己也动手实现一下,毕竟自己才刚开始学习cocos2d-x

代码把:

这个是HelloWorld类,继承LayerColor

class HelloWorld : public cocos2d::LayerColor
{
public:
    static cocos2d::Scene* createScene();

    virtual bool init();  
    virtual void update(float dt);@H_502_26@//这里的update函数是重写了scheduleUpdate里面的update函数,一开始写成了updata,于是小球根本就不会动,这个函数的名字不能错的

    void menuCloseCallback(cocos2d::Ref* pSender);

    CREATE_FUNC(HelloWorld);
private:
    cocos2d::Sprite *  ball;@H_502_26@//这里是一个小球
};

这是init函数

bool HelloWorld::init()
{
    @H_502_26@//////////////////////////////
    @H_502_26@// 1. super init first
    if (!LayerColor::initWithColor(Color4B(255,255,255)))
    {
        return false;
    }

    Size visibleSize = Director::getInstance()->getVisibleSize();
    Vec2 origin = Director::getInstance()->getVisibleOrigin();
    @H_502_26@//auto b = Sprite::create("p3.png");
    @H_502_26@//b->setPosition(200,200);
    @H_502_26@//addChild(b);// addChild(b);//一开始是这样子的,这样的代码可以创建出一个小球出来

    ball = Sprite::create("p2.png");
    addChild(ball);
    ball->setPosition(200,200);
    @H_502_26@//b->runAction(MoveBy::create(1,Vec2(100,0)));
    @H_502_26@//b->runAction(RepeatForever::create(MoveBy::create( 1,0))));
    @H_502_26@//这里的runAction也可以让小球运动,但是想要精确的控制小球的运动,还是需要scheduleUpdate函数来实现
    scheduleUpdate();@H_502_26@//我们需要自己重写update函数来达到自己想要的目的
    return true;
}

我们自己重写update函数达到自己的目的
主要是为了小球的越界返回原点处理

void HelloWorld::update(float dt)
{
    ball->setPositionX(ball->getPositionX() + 5);@H_502_26@//每一帧移动5像素
    Size visibleSize = Director::getInstance()->getVisibleSize();
    @H_502_26@//这里是得到可视窗口的大小
    if (ball->getPositionX() > (visibleSize.width + ball->getContentSize().width / 2))
    {@H_502_26@//如果要出界了,那我们就要把小球返回原来的初始位置
        ball->setPositionX(ball->getContentSize().width/2);

    }

}

猜你在找的Cocos2d-x相关文章