2012-09-04 84 views
0

我有一個奇怪的,惱人的問題。製作按鈕圖片專用按鈕?

例如,在我的主菜單屏幕中,我有一個按鈕,顯示「說明」。

一旦我點擊它,在說明圖層中,就會有一個按鈕讓你回到主菜單。

但是,由於某種原因,按鈕操作並非排除在精靈圖像之外。如果我點擊3英寸遠離「backtomenu」按鈕,它仍然會將我帶回主菜單。

所以,我的問題是,只有當您點擊實際圖像時,如何才能使按鈕被點擊? (這是我如何創建一個按鈕)

- (id) init 
{ 
    if((self = [super init])) 
    { 
     [self instructions]; 
    } 
    return self; 
} 

- (void) instructions 
{ 
    bgI = [CCSprite spriteWithFile:@"testbackground11.png"]; 
    [bgI setPosition:ccp(160,240)]; 
    ccTexParams params = {GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; 
    [bgI.texture setTexParameters:&params]; 
    [self addChild:bgI z:0]; 

    returnToMenu = [CCMenuItemImage itemFromNormalImage:@"berry2.png" 
                  selectedImage:@"berry2_selected.png" 
                  target : self 
                  selector: @selector (ifReturnToMenu:)]; 
    CCMenu *myReturnMenu = [CCMenu menuWithItems:returnToMenu, nil]; 

          [myReturnMenu alignItemsVertically]; 

          [self addChild: myReturnMenu]; 

} 

- (void) ifReturnToMenu: (CCMenuItem *) menuItem 
{ 
    if(menuItem == returnToMenu) 
    [[CCDirector sharedDirector] replaceScene: 
    [CCTransitionFade transitionWithDuration:0.5f scene: [MainMenu scene]]]; 
} 
+3

圖像上是否存在一些額外的透明填充?按鈕點擊區域基於精靈的大小。 –

+0

不,沒有。 :( – Surz

+0

我看不出你的代碼有什麼問題你有沒有重寫onEnter或類似的東西,並忘記調用超級? –

回答

1

我不知道 'isReturnToMenu' 如何被激發,但你可以試試這個

- (void) ifReturnToMenu: (CCMenuItem *) menuItem{ 
if(menuitem == returnToMenu){ 
    [[CCDirector sharedDirector] replaceScene: 
    [CCTransitionFade transitionWithDuration:0.5f scene: [MainMenu scene]]]; 
} 

}

如果它不工作,您需要發佈激發它的代碼,以便我們可以幫助您更多

+0

嗯,仍然有相同的'錯誤'。(我點擊屏幕底部,按鈕仍然執行它的動作) – Surz

+0

我添加了可以激發它的代碼。太多了 – Surz

+0

你的代碼似乎沒問題,所以我在這一張上使用了@Ben,它可能是圖像的額外透明空間,如果有的話嘗試裁剪額外的空間。 – yannicuLar