2013-07-11 3 views
0

Я работаю на cocos2d, и я нахожусь в необходимости добавления слушателя к коду sprite.my здесьКак добавить слушатель спрайта в cocos2d в андроиде

public class GameOverScreen extends CCLayer implements KeyHandler { 

public static CCScene scene(Difficulty difficulty, long totalscore) { 

    CCScene result = CCScene.node(); 

    CCSprite redeem = CCSprite.sprite("redeem.png");// listener to this sprite 
    CGSize s = CCDirector.sharedDirector().winSize(); 
    redeem.setScale(Block.SCALE*Main.SCALE); 
    redeem.setPosition(-1, -1); 

    redeem.setAnchorPoint(CGPoint.ccp(-0.7f, -1)); 

    result.addChild(new GameOverScreen(NewHighscore, totalscore)); 
    result.addChild(redeem); 

    return result; 


} 
+0

я вмятина получить, может у разработать? @ пользователь1427756 –

+0

@DD. я нуждаюсь в том, чтобы добавить слушателя касания на спрайте ... аналогичный тип запроса - это http://stackoverflow.com/questions/16648196/how-to-get-sprites-react-to-touches-in- cocos2d-андроид. Но это не работало в моем случае –

+0

что вам нужно на ощупь прикупить? –

ответ

0
@Override 
public boolean ccTouchesBegan(MotionEvent event) { 
location = CCDirector.sharedDirector().convertToGL(CGPoint.ccp(event.getX(), event.getY())); 

    if(CGRect.containsPoint((redeem.getBoundingBox()), location)){ 
     //Action 
    } 
return true; 
} 

Короткий и простой трюк, чтобы решить эту проблему

0

вы можете сделать эту вещь :

CCMenuItemImage item1 = CCMenuItemImage.item("redeem.png","redeem.png", this,"function_name"); 

CCMenu menu = CCMenu.menu(item1); 
    menu.setPosition(CGPoint.make(0, 0)); 
    item1.setPosition(CGPoint.make(winSize.width/2, winSize.height/2)); 

function_name используется при нажатии на выкуплен изображение (Sprite)

public void function_name(Object sender) 
{ 
// what you want to perform on the click like : enter the CCScene etc. 
} 
+0

Для одной кнопки ,,, реализация CCMenu ,, это нехорошая опция ,,, я думаю ..... В любом случае Спасибо за ответ –

+0

добавил ответ –

0

я нашел решение и код следующим образом:

public static CCScene scene(Difficulty difficulty, long totalscore) { 
    boolean NewHighscore = Settings.Current().addToHighscore(difficulty, totalscore); 

    CCScene result = CCScene.node(); 

    CCSprite redeem = CCSprite.sprite("redeem.png"); 
    s = CCDirector.sharedDirector().winSize(); 
    redeem.setScale(Block.SCALE*Main.SCALE); 
    redeem.setPosition(s.width/2, s.height/4); 




    result.addChild(new GameOverScreen(NewHighscore, totalscore)); 
    result.addChild(redeem); 


    projectileRect = CGRect 
      .make(redeem.getPosition().x 
        - (redeem.getContentSize().width/2.0f), 
        redeem.getPosition().y 
          - (redeem.getContentSize().height/2.0f), 
          redeem.getContentSize().width, 
          redeem.getContentSize().height); 



    return result; 

} 

@Override 
public boolean ccTouchesBegan(MotionEvent event) { 


    CGPoint touchLocation=CGPoint.ccp(event.getX(), event.getY()); 
    CGRect targetRect = CGRect.make(
      event.getX(), 
      s.height-event.getY(), 
      5, 
      5); 




     if (CGRect.intersects(projectileRect, targetRect)) 
     { 
      System.out.println("here inside intersection"); 
      // RevMob functionality 
     } 



    return super.ccTouchesBegan(event); 


} 
+0

вы можете использовать приведенное выше код и оба одинаково одинаковы, но вы можете уменьшить вес кода –