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

前端之家收集整理的这篇文章主要介绍了cocos2d-x中,多个精灵执行同样的动作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_0@简而言之:虽然是“同样”(从效果来说)的动作,但是每个精灵必须run不同的action对象

@H_301_0@

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

//创建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都没动。 @H_301_0@如图:
开始时:

@H_301_0@

@H_301_0@运动结束:

@H_301_0@

@H_301_0@

@H_301_0@因为三个精灵使用了同一个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);
 开始的图和之前一样,结果如图(三个精灵都到达目的地): 
 
@H_301_0@  

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