2013-07-11 11 views
0

我工作的cocos2d的,我在需要添加监听到sprite.my代码的侦听器添加到一个精灵在cocos2d在这里如何在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

我不力得到,u能详细点吗? @ user1427756 –

+0

@DD。我需要在精灵上添加一个触摸侦听器...类似的查询类型是这个http://stackoverflow.com/questions/16648196/how-to-get-sprites-react-to-touches-in- cocos2d-android。但是这不是在我的情况下工作 –

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

函数名被使用(雪碧)

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

对于单个按钮,,,实施CCMenu ,,是不是一个好的选择,,,我认为.....反正Thankyou的回复 –

+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

你可以使用上述代码和两者都是相同的,但您可以减少代码重量 –