2012-04-11 77 views
1

我們可以檢查CGPoint是否碰到了CMenu項目? 如果指向按鈕,我需要返回YES,如果點沒有按鈕,則需要NO。支票是CMenu當前的CGPoint

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

      for (CCMenu *menu in self.children) 
      { 

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


       } 
      } 

     } 
     return NO; 
    } 

菜單按鈕:

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

您的觀點是觸摸位置嗎? – 2012-04-12 07:30:27

+0

是的。我的觀點是觸摸位置 – user1021984 2012-04-13 16:15:08

回答

1

你可以嘗試水木清華這樣

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

因爲你是指的點是觸摸(從評論),如果你觸摸菜單上的按鈕,該項目將被選中。

-(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] ***終止應用程序,由於未捕獲異常'NSInvalidArgumentException',原因:' - [CCSprite isSelected]:無法識別的選擇器發送到實例0x37d100 ' – user1021984 2012-04-15 15:27:32

+0

您已經使用了CCSprite。我使用了CCMenuItem – 2012-04-16 14:43:24

+0

我用CCMenuItem – user1021984 2012-04-16 16:42:34