CCMenuItemImage未显示选定状态

时间:2012-04-09 21:00:00

标签: cocos2d-iphone ccmenuitem

documentation for CCMenuItemImage实际上并没有说出它的作用。

有很多子类CCMenuItem。 我继承了一个将它用作按钮的项目。

CCMenuItem *start;
start = [CCMenuItemImage itemFromNormalImage:[self prefixedImage:@"start button.png"]
                               selectedImage:[self prefixedImage:@"start button selected.png"]
                                      target:myTarget
                                    selector:@selector(start:)];

使用两个州的相同按钮。 我修改它以使所选状态具有不同的图像。

我期待/希望当我触摸项目时它会突出显示,当我释放按钮时它会发送我的目标动作(它会这样做)。

(除了:在iOS用语中,我知道 highlightedselected是两个不同的东西。但是这个库似乎没有那个区别。)

所以:

  • 是否打算将此“菜单项”用作按钮?
  • 何时显示此菜单项的选定图像?
  • 我应该如何将其显示为选中状态?

3 个答案:

答案 0 :(得分:1)

CCMenuItem是一个抽象类,所有其他菜单项都是从该类继承的,因此您在代码中所做的操作在技术上是错误的。

另一方面,您可以将CCMenuItem子类化为自己的自定义类(例如:您不能使用按钮和标签作为菜单项,您必须使用按钮本身,标签是在顶部..只是为了显示,或使用标签和下面的按钮是......毫无意义)

对CCMenuItem进行子类化并创建自己的类将解决该问题(我的意思是你可以创建一个方法来获取图像和字符串并返回一个按钮)

你想做的是:

 CCMenuItemImage *button= [CCMenuItemImage itemFromNormalImage:@"start button.png"
                           selectedImage:@"start button selected.png"
                                  target:self
                                selector:@selector(start:)];

 CCMenu *start=[CCMenu menuWithItems:button,nil];
start.position=ccp(200,200);
[self addChild:start];

当您将手指放在菜单上时,它将用所选的一个替换正常图像,但只会激活您在按钮的边界框中释放它(也就是说...您可以按下按钮,移动手指远离按钮,它不会激活)。 因此,只要你松开手指,然后将其选中,按钮就会突出显示。

这回答了你的问题吗?

答案 1 :(得分:1)

试试这段代码......

CCMenuItemImage *backbtn = [CCMenuItemImage itemFromNormalImage:@"backbtn.png" selectedImage:@"backbtn_selected.png" target:self selector:@selector(LBback)];
CCMenu *Menu1 = [CCMenu menuWithItems:backbtn,nil];

[Menu1 alignItemsVerticallyWithPadding:15];
Menu1.position = ccp(160, 240);
[self addChild:Menu1];

借助此...当您触摸图像时显示所选图像其他明智的正常图像... :)

以后,当您的函数被调用并且您想要更改其图像时,您可以像这样设置..

 [backbtn setNormalImage:[CCSprite spriteWithFile:@"backbtn_selected.png"]];

答案 2 :(得分:1)

上面的代码是正确的。

用于选择的图像资源未添加到项目,因此未显示。它可能在创建时输出错误消息(隐藏在其他输出中),但在点击时不输出错误消息。

无声/安全故障导致用户错误更难以追踪。