2013-12-11 42 views
0

我想通過觸摸屏幕來移動精靈,我希望精靈移動到我觸摸的位置。 我已經實現了一個代碼,但它崩潰了,我想通過觸摸屏幕移動一個精靈,但我的應用程序崩潰。如何通過觸摸Android應用移動spirte cocos2d

public class GameLayer extends CCLayer { 

static final int kTagSprite = 1; 
public static CCScene scene() 
{ 

    CCScene scene = CCScene.node(); 
    CCLayer layer = new GameLayer(); 

    scene.addChild(layer); 


    return scene; 
} 

protected GameLayer() 
{ 
    this.setIsTouchEnabled(true); 

    CCSprite player2 = CCSprite.sprite("Yellow.png") ; 
    player2.setPosition(CGPoint.ccp(150 , 150)); 

    addChild(player2 , kTagSprite); 

} 

@Override 
public boolean ccTouchesBegan(MotionEvent event) { 
    //create point takes coordinates of touch 
    CGPoint convertedLocation = CCDirector.sharedDirector() 
     .convertToGL(CGPoint.make(event.getX(), event.getY())); 



    CCNode s = getChild(kTagSprite); 
    s.stopAllActions(); 
    s.runAction(CCMoveTo.action(1.0f, convertedLocation)); 


    return CCTouchDispatcher.kEventHandled; 
    } 

} 
+0

歡迎堆棧溢出。你能否提供更多的信息,比如你得到的錯誤信息?另外,你是否已經將你的代碼簡化爲基本要素;爲了找到代碼正常工作的地步? – kgdesouz

回答

0

你必須檢查的條件:

**

CCNode s = this.getChildByTag(kTagSprite); 
if(s!= null && s.isRunning()){ 
    s.stopAllActions(); 
} 

**

它將work.Try this.If不要將日誌

0

你在addChild函數中,我們使用kTagSprite作爲錯誤的參數。已使用的addChild功能:

addchild(spriteParameter, z-orderParameter); 

您需要使用的addChild爲:

addchild(spriteParameter, z-orderParameter, spriteTagParameter); 

所以你需要更換:

addChild(player2, kTagSprite); 

有:

addChild(player2, 1, kTagSprite);