2013-09-21 53 views
0

我是Cocos2D和Java的完整noob,所以請原諒我的無知,但我非常熱衷於學習!Android Cocos2d MoveTo操作

通過學習,我創建了一個顯示圖像集合(存儲在數組中)的簡單應用程序,然後使它們全部移動到觸摸位置。

我不能完全掌握動作和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 

我想我需要添加某種動作結束命令?我也不明白爲什麼只有陣列中的最後一張圖像纔會移動,而不是其他的。

回答

2

當調用runAction方法時,對動畫對象的引用存儲在動作對象中,所以如果在每次迭代中運行相同的動作對象,則只有最後一個圖像將保持存儲。

要解決這個問題,您只需要爲陣列中的每個圖像創建一個CCMoveTo操作。此外,++i在第一次迭代中使用它之前會增加變量i,因此您將跳過數組的第一個元素。

的代碼看起來像this.-

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爲Android不再處於開發階段,如果你正在學習,我建議你去爲cocos2d-xlibgdx

+0

謝謝,這樣一個簡單的修復!我沒有意識到Cocos2D不再適用於Android開發,但這將解釋爲什麼它很難找到指南(我一直在試圖遵循iOS Cocos2D指南)。 – Mateus

+0

很高興幫助:)如果你沒有嘗試任何'共同點',我想你會適應cocos2d-android,但是你可能會錯過更高級的東西。無論如何,最好的運氣! – ssantos