cocos2d-x中,多个精灵执行同样的动作

前端之家收集整理的这篇文章主要介绍了cocos2d-x中,多个精灵执行同样的动作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

简而言之:虽然是“同样”(从效果来说)的动作,但是每个精灵必须run不同的action对象


例如:需要三个精灵同时跑到一个点去,使用动作来完成。

//创建3个精灵
    auto s1 = Sprite::create("CloseNormal.png");
    auto s2 = Sprite::create("CloseNormal.png");
    auto s3 = Sprite::create("CloseNormal.png");
    //设置位置在屏幕左边1/4处,分上中下来放
    s1->setPosition(Vec2(visibleSize.width * 0.25,visibleSize.height * 0.75));
    s2->setPosition(Vec2(visibleSize.width * 0.25,visibleSize.height * 0.5));
    s3->setPosition(Vec2(visibleSize.width * 0.25,visibleSize.height * 0.25));
    //添加到层中显示
    this->addChild(s1);
    this->addChild(s2);
    this->addChild(s3);
    //创建动作,移动到屏幕右边3/4处的中心位置
    auto action = MoveTo::create(3,Vec2(visibleSize.width * 0.75,visibleSize.height * 0.5));
    //三个精灵执行这个动作
    s1->runAction(action);
    s2->runAction(action);
    s3->runAction(action);
结果:只有s3跑到目的地,s1和s2都没动。

如图:
开始时:


运动结束:



因为三个精灵使用了同一个action对象。下面来修改一下,给每个精灵创建一个对象。

<pre name="code" class="cpp">//创建3个精灵
    auto s1 = Sprite::create("CloseNormal.png");
    auto s2 = Sprite::create("CloseNormal.png");
    auto s3 = Sprite::create("CloseNormal.png");
    //设置位置在屏幕左边1/4处,分上中下来放
    s1->setPosition(Vec2(visibleSize.width * 0.25,visibleSize.height * 0.25));
    //添加到层中显示
    this->addChild(s1);
    this->addChild(s2);
    this->addChild(s3);
    //创建动作,移动到屏幕右边3/4处的中心位置
    auto action1 = MoveTo::create(3,visibleSize.height * 0.5));
    auto action2 = MoveTo::create(3,visibleSize.height * 0.5));
    auto action3 = MoveTo::create(3,visibleSize.height * 0.5));
    //三个精灵执行这个动作
    s1->runAction(action1);
    s2->runAction(action2);
    s3->runAction(action3);
 开始的图和之前一样,结果如图(三个精灵都到达目的地): 
 

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