Cocos2d iphone 如何防止CCMenuItemLabel或CCMenu在点击时更改字体大小?
当我点击由CCLabelTTF制作的CCMenuItemLabel时,我得到的动画显示文本在点击时会增大,这一切都会破坏我的界面。我该如何解决这个问题?我不希望菜单在点击时做出反应。我在CCMenuItemLabel或CCMenuItem或CCMenu中未找到任何相关内容 我找到了CCMenuItemLabel的以下代码:Cocos2d iphone 如何防止CCMenuItemLabel或CCMenu在点击时更改字体大小?,cocos2d-iphone,Cocos2d Iphone,当我点击由CCLabelTTF制作的CCMenuItemLabel时,我得到的动画显示文本在点击时会增大,这一切都会破坏我的界面。我该如何解决这个问题?我不希望菜单在点击时做出反应。我在CCMenuItemLabel或CCMenuItem或CCMenu中未找到任何相关内容 我找到了CCMenuItemLabel的以下代码: -(void) selected { // subclass to change the default action if(_isEnabled) {
-(void) selected
{
// subclass to change the default action
if(_isEnabled) {
[super selected];
CCAction *action = [self getActionByTag:kCCZoomActionTag];
if( action )
[self stopAction:action];
else
_originalScale = self.scale;
CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:_originalScale * 1.2f];
zoomAction.tag = kCCZoomActionTag;
[self runAction:zoomAction];
}
}
-(void) unselected
{
// subclass to change the default action
if(_isEnabled) {
[super unselected];
[self stopActionByTag:kCCZoomActionTag];
CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:_originalScale];
zoomAction.tag = kCCZoomActionTag;
[self runAction:zoomAction];
}
}
事实证明,它运行缩放操作,除了对菜单项进行子类化之外,还有什么方法可以覆盖它吗?我随机想出了一个肮脏的破解方法,可能有人对此感兴趣。 在我的游戏中,当我显示菜单时,游戏将暂停 所以我调用
[[CCDirector sharedDirector]pause]代码>
这会降低帧速率并暂停所有操作,因此点击菜单项不再触发操作,它确实会触发操作,但不会运行,因为它已暂停
离开菜单后,使用简单的[[CCDirector sharedDirector]resume]代码>我想你不想让导演停下来
我将研究覆盖CCMenuitemlabel
请看以下方法:
-(void) selected
{
// subclass to change the default action
if(isEnabled_) {
[super selected];
CCAction *action = [self getActionByTag:kCCZoomActionTag];
if( action )
[self stopAction:action];
else
originalScale_ = self.scale;
CCAction *zoomAction = [CCScaleTo actionWithDuration:0.1f scale:originalScale_ * 1.2f];
zoomAction.tag = kCCZoomActionTag;
[self runAction:zoomAction];
}
}
我将使用wierd默认缩放删除缩放操作
[CCScaleTo actionWithDuration:0.1f scale:originalScale_ * 1.2f];
为了解决这个缩放问题,在项目中创建一个子类并添加一个额外的文件,我感觉不是很好
您可以创建一个CCNodeRGBA对象,将contentsize设置为与CCLabelTTF维度相同的大小,将CCLabelTTF粘贴到CCNodeRGBA对象中,并将其作为参数传递给CCMenuItemSprite。再次搜索菜单/项代码以查找“缩放”(属性或操作)的用法,它就在那里的某个地方。@LearnCos2D编辑的问题我最终生成了子类,而不是[super selected/unselected]这样就不会调用此代码。但是,我确实在我的方法中实现了此代码的super中的任何内容:CCMenuItem类(琐碎,查找)。无论哪种方式,像我这样进行子类化还是直接修改CCMenuItemLabel都是一个糟糕的选择:两者都给我留下了一个可维护性问题。