2013-07-11 4 views
0

je travaille sur cocos2d, et je suis dans le besoin d'ajouter un auditeur à un code sprite.my est iciComment ajouter auditeur à une image-objet cocos2d dans Android

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

i force obtenir, peut u élaborer? @ user1427756 –

+0

@DD. Je suis dans le besoin d'ajouter un écouteur tactile sur un sprite ... type de requête similaire est-ce http://stackoverflow.com/questions/16648196/how-to-get-sprites-react-to-touches-in- cocos2d-android. Mais cela ne fonctionnait pas dans mon cas –

+0

ce que tu veux sur la touche de racheter? –

Répondre

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; 
} 

trick court et simple à résoudre ce

0

vous pouvez faire cette chose :

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)); 

nom_fonction est utilisé lorsque vous cliquez sur le rachat de l'image (Sprite)

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

Pour un seul bouton ,,, l'implémentation CCMenu ,, n'est pas une bonne option ,,, je pense ..... En tout cas Merci pour la réponse –

+0

ajouté la réponse –

0

j'ai trouvé la solution et le code est la suivante:

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

vous pouvez utiliser ce qui précède code et les deux sont identiques, mais vous pouvez réduire le poids du code –

Questions connexes