0

当我点击由 CCLabelTTF 制作的 CCMenuItemLabel 时,我得到的动画是文本在被点击时会增大,这一切都搞砸了我的界面。我该如何解决?我不希望菜单对点击做出反应。我没有在 CCMenuItemLabel 或 CCMenuItem 或 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];
    }
}

事实证明,它运行缩放动作,除了子类化菜单项之外还有什么方法可以覆盖它?

4

3 回答 3

0

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

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

于 2013-09-12T06:45:45.497 回答
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];
于 2013-08-28T22:56:27.807 回答
-1

我为此随机想出了一个肮脏的技巧,有人可能会感兴趣。在我的游戏中,当我显示菜单时,游戏无论如何都会暂停。

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

这会减慢帧速率并暂停所有动作,因此点击菜单项不再触发动作,它确实会触发它,但它不会运行,因为它已暂停。

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

于 2013-05-15T07:18:37.813 回答