2012-04-11 2 views
1

Können wir prüfen, ob CGPoint in CMenu Element berührt haben? Ich brauche zurück JA wenn Punkt in der Taste und NEIN wenn Punkt nicht in der Taste.Prüfung ist aktuell CGPoint in CMenu

-(BOOL)isButton:(CGPoint)point 
    { 
     if(controlMode == 1) 
     { 

      for (CCMenu *menu in self.children) 
      { 

        // If point in button 
        return YES; 
        // else 
        return NO; 


       } 
      } 

     } 
     return NO; 
    } 

Menütasten:

CCMenuItem *pauseItem = [CCMenuItemImage itemFromNormalImage:@"pause.png" selectedImage:@"pause_.png" target:self selector:@selector(pauseGame:)]; 
CCMenuItem *resetItem = [CCMenuItemImage itemFromNormalImage:@"reset.png" selectedImage:@"reset_.png" target:self selector:@selector(resetClicked:)]; 
CCMenu *Menu = [CCMenu menuWithItems:pauseItem,resetItem, nil]; 
Menu.position = ccp(450, 40); 
[Menu alignItemsVerticallyWithPadding:5]; 
[self addChild:Menu]; 
+0

Ist Ihr Punkt ein Touch-Standort? –

+0

Ja. Mein Punkt ist Touch-Standort – user1021984

Antwort

1

können Sie smth wie diese

for(CCMenuItem* item in yourMenu.children) 
{ 
    CCPoint localPoint = [item convertToNodeSpace:point]; 
    if((localPoint.x <= item.contentSize.width) && (localPoint.y <= item.contentSize.height)) 
    { 
     // in that case your point is in this item of your CCMenu 
    } 
} 
2

versuchen Da der Punkt, den Sie beziehe sich ein Hauch (von Kommentaren) ist, wenn Sie ein berühren Schaltfläche im Menü, wird dieser Punkt ausgewählt.

-(BOOL) isAButtonSelected 
{ 
    for(CCMenuItem* item in menu.children) 
    { 
     if(item.isSelected) return YES; 
    } 
    return NO; 
} 
+0

2012-04-15 19: 27: 09.054 AppTest [468: 707] *** Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '- [CCSprite isSelected]: unerkannter Selektor an Instanz 0x37d100 gesendet ' – user1021984

+0

Sie haben einen CCSprite verwendet. Ich habe ein CCMenuItem –

+0

verwendet ich CCMenuItem – user1021984