2013-12-11 37 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);