2012-09-04 87 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