0

次のコードを使用しています。

CCMenuItemFont *controllerItem = [CCMenuItemFont itemFromString:@"Analog" target:self selector:@selector(controllerToggle)];

    CCMenu *controllerTypeMenu = [CCMenu menuWithItems:controllerItem, nil];
    [controllerTypeMenu alignItemsVerticallyWithPadding:30.0f];
    controllerTypeMenu.position = CGPointMake(160.0f, 240.0f);
    [self addChild:controllerTypeMenu z:0 tag:ControllerMenu];
}  

-(void) controllerToggle
{
    CCMenuItemFont *controllerItem = [self getChildByTag:888];
    NSString * text = [NSString stringWithFormat: @"switching.. %f", CCRANDOM_0_1()];
    [controllerItem setString:text];
}

controllerToggle では、controllerItem にアクセスして、String を別の値に変更したいと考えています。これは可能ですか?私が確認したところ、CCMenu は、配列の順序に基づいて CCMenuItems を子として追加します。しかし、それはエレガントな解決策ではありません。同じ理由で、CCMenuItem を Scene に追加すると、「child already added エラー」が発生するため、追加できません。だから私は自分の「スイッチ」ボタンを書くべきだと感じていますが、すでに何かがあるのだろうか..

何か助けて?? ありがとう!

4

2 に答える 2

3

必要なメニュー項目をクラス メンバーとして宣言できます。このようにして、いつでもアクセスできるようになります

于 2012-09-03T11:26:47.040 に答える
0

クリック イベントで任意のメニュー項目のタイトルまたはイメージを切り替えるために使用される CCMenuItemToogle が既にあります。CCMenuItem の代わりに、CCMenuItemToggle を使用できます。

以下にサンプル コードを示します。 CCmenuItemToggle *cam=[CCMenuItemToggle itemWithTarget:self selector:@selector(openCameraController) items:cameraOn,cameraOff, nil]; cameraOn と cameraOff は、CCMenuItemToggle に追加された 2 つの単純な CCMenuItemImage であり、さらにこの CCmenuItemToggle がメニューに追加されます。

これで、CCMenuItemToggle をクリックするたびに、同じ menuitem の cameraOn と cameraOff の状態になります。

これが役立つことを願っています...

于 2012-09-04T07:59:53.113 に答える