2013-12-11 4 views
0

Я хочу переместить спрайт, прикоснувшись к экрану, я хочу, чтобы спрайт переместился в то место, которое я коснулся. Я реализовал код, но он сбой, я хочу переместить спрайт, коснувшись экрана до этой точки, но мое приложение падает.Как перемещать spirte прикосновением Android-приложения 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

вас Я использовал kTagSprite как неправильный аргумент в функции addchild. Вы использовали функцию AddChild как:

addchild(spriteParameter, z-orderParameter); 

Вы должны использовать AddChild как:

addchild(spriteParameter, z-orderParameter, spriteTagParameter); 

Так что вам нужно заменить:

addChild(player2, kTagSprite); 

с:

addChild(player2, 1, kTagSprite); 
Смежные вопросы