2

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

所以:

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

3 回答 3

1

上面的代码是正确的。

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

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

于 2012-04-11T00:37:25.197 回答
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"]];
于 2012-04-10T05:35:21.130 回答
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];

当您将手指放在菜单上时,它将用选定的图像替换普通图像,但只会激活您在按钮的边界框中释放它(又名..您可以按下按钮,将手指从按钮,它不会激活)。因此,在某种意义上,该按钮会突出显示,直到您松开手指,然后将其选中。

这回答了你的问题吗?

于 2012-04-09T22:01:12.543 回答