2013-01-23 87 views
0

我試圖做一個基本的遊戲,它需要嚴重的按鈕來控制玩家的移動。請記住我正在使用cocos-2d。我的目標是按住按鈕並在按住時移動精靈。我現在使用的代碼看起來像這樣。按鈕崩潰的應用程序與(發件人)發件人

CCMenuItemHoldable.h

@interface CCMenuItemSpriteHoldable : CCMenuItemSprite { 
    bool buttonHeld; 
} 

@property (readonly, nonatomic) bool buttonHeld; 

CCMenuItemHoldable.m

@implementation CCMenuItemSpriteHoldable 

@synthesize buttonHeld; 

-(void) selected 
{ 
    [super selected]; 
    buttonHeld = true; 
    [self setOpacity:128]; 
} 

-(void) unselected 
{ 
    [super unselected]; 
    buttonHeld = false; 
    [self setOpacity:64]; 
} 

@end 

以及按鈕

rightBtn = [CCMenuItemSpriteHoldable itemFromNormalSprite:[CCSprite spriteWithFile:@"art/hud/right.png"] selectedSprite:[CCSprite spriteWithFile:@"art/hud/right.png"] target:self selector:@selector(rightButtonPressed)]; 


CCMenu *directionalMenu = [CCMenu menuWithItems:leftBtn, rightBtn, nil]; 
[directionalMenu alignItemsHorizontallyWithPadding:0]; 
[directionalMenu setPosition:ccp(110,48)]; 
[self addChild:directionalMenu]; 

的建立這一切似乎很好地工作,但是當我做

-(void)rightButtonPressed:(id) sender 
{ 

    if([sender buttonHeld]) 
      targetX = 10; 
     else{ 
      targetX = 0; 
     } 
} 

崩潰已被修復,但我試圖讓我的精靈移動。在我的遊戲滴答功能中,我將targetX的值添加到定時器上精靈的位置,仍然沒有移動。

+0

錯誤信息?在Xcode中啓用全局異常斷點以獲取更多詳細信息。 – LearnCocos2D

回答

0

請提出有關崩潰的問題時,一定要包含崩潰日誌。

就你而言,我可以猜出這個問題。你加入這個選擇:

@selector(rightButtonPressed) 

你的方法被稱爲

rightButtonPressed:(id)sender 

這將是一個選擇,rightButtonPressed: - 注意冒號表示一個參數傳遞。請改變方法,使其沒有參數,或者在創建按鈕時向選擇器添加冒號。

崩潰日誌會告訴你這個 - 它會說「無法識別的選擇器發送到...」,接收類的名稱和選擇器的名稱。

+0

固定它不幸的是精靈仍然沒有響應rightButtonPressed。我已通過一個布爾值到我的滴答功能,但它不承認我按住按鈕的動作。 – user1569940

+0

那麼,這是一個新問題。如果此答案已解決您所問的問題,請通過單擊刻度標記將其標記爲已接受。 – jrturton

相關問題