2013-05-13 29 views
0

当我点击CCLabelTTF制作的CCMenuItemLabel时,我得到的是那个动画,文本在被点击的时候增加了大小,并且这些动画都让我的界面变得很糟糕。我如何解决这个问题?我不希望菜单对点击作出反应。我在CCMenuItemLabel或CCMenuItem或CCMenu中没有发现任何相关内容。如何防止CCMenuItemLabel或CCMenu在点击时更改字体大小?

我已经找到了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]; 
    } 
} 

-(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]; 
    } 
} 

事实证明,它运行缩放动作,任何方法来覆盖这个子类以外的菜单项?

+0

再次搜索菜单/项目代码以使用“scale”(属性或动作),它在某处。 – LearnCocos2D 2013-05-13 20:48:00

+0

@ LearnCocos2D编辑问题 – Dvole 2013-05-13 21:01:52

+0

我结束了继承而不是[super selected/unselected],这样这段代码就不会被调用。然而,我在我的方法中实现了这个代码的超级中的任何东西:CCMenuItem类(简单,查看它)。无论哪种方式,像我这样的子类化或直接修改CCMenuItemLabel是一个糟糕的选择:两者都给我一个可维护性问题。 – YvesLeBorg 2013-05-13 21:21:54

回答

-1

我随机想出了一个肮脏的黑客攻击,有人可能会感兴趣。 在我的游戏中,当我显示菜单时,反正游戏暂停。

所以我打电话[[CCDirector sharedDirector] pause];

这会减慢帧率和暂停的操作,所以敲击菜单项不再触发动作,以及它触发它,但它不运行,因为它已暂停。

在离开菜单使用简单[[CCDirector sharedDirector] resume];

0

我不认为你要暂停导演

我会去了解一下重写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]; 
    } 
} 

我会删除使用默认缩放比例的缩放操作

[CCScaleTo actionWithDuration:0.1f scale:originalScale_ * 1.2f]; 
0

我不觉得很好做一个子类,并在项目中有一个额外的文件,只是为了解决这个缩放问题。

您可以创建一个CCNodeRGBA对象,设置内容与CCLabelTTF尺寸相同,将CCLabelTTF粘贴到CCNodeRGBA对象中,并将其作为参数传递给CCMenuItemSprite。