Android Cocos2d MoveTo动作

时间:2013-09-21 18:10:55

标签: android cocos2d-iphone

我是Cocos2D和Java的完全菜鸟,所以请原谅我的无知,但我非常渴望学习!

通过学习,我正在创建一个简单的应用程序,显示一组图像(存储在一个数组中),然后将它们全部移动到触摸位置。

我无法完全了解动作和MoveTo,因为在下面的For循环中,只有数组中的最后一个图像移动。

public boolean ccTouchesMoved(MotionEvent e){
    CGPoint touchLocation = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(e.getX(), e.getY()));
    CCMoveTo imgMove = CCMoveTo.action(2f, touchLocation);
        for (int i = 0; i < imgs.length; ++i){
            imgs[i].runAction(imgMove); 
        };
    return true;
};

此外,图像并不总是在每次触摸时移动(它有点随机),我在日志中收到此错误:

CCActionManager removeAction: target not found

我假设我需要添加某种行动结束命令?我也不明白为什么只有阵列中的最后一张图像移动而不是其余的。

1 个答案:

答案 0 :(得分:2)

调用runAction方法时,对动画对象的引用存储在动作对象中,因此如果在每次迭代时运行相同的动作对象,则只保留最后一个图像。

要解决此问题,您只需为阵列中的每个图像创建CCMoveTo操作。此外,++i在第一次迭代中使用它之前递增变量i,因此您正在跳过数组的第一个元素。

代码看起来像这样.-

public boolean ccTouchesMoved(MotionEvent e){
    CGPoint touchLocation = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(e.getX(), e.getY()));        
        for (int i = 0; i < imgs.length; i++){
            CCMoveTo imgMove = CCMoveTo.action(2f, touchLocation);
            imgs[i].runAction(imgMove); 
        };
    return true;
};

顺便说一句,我相信 cocos2d for android 不再处于开发阶段,如果你正在学习,我建议你去cocos2d-xlibgdx。< / p>