0

私のゲームにはcustom localization systemが使用されています。そのチュートリアルでは、彼は独自の方法でラベルを追加しますが、私のテキストラベルを初期化iphoneゲーム用のcocos2dカスタムローカライゼーションシステム

チュートリアルの例で追加されています

-(void) menuCallbackEN: (id) sender 
{ 
    LocalizationSetLanguage(@"English"); 
    [self setHelloWorldLabel]; 
} 

がどのように複数のテキストラベルに対処するための言語を設定する

- (void) setHelloWorldLabel 
{ 
    // create and initialize a Label 
    CCLabel* label = [CCLabel labelWithString:AMLocalizedString(@"hello",@"Hello World") fontName:@"Marker Felt" fontSize:32]; 

    // ask director the the window size 
    CGSize size = [[CCDirector sharedDirector] winSize]; 

    // position the label on the center of the screen 
    label.position = ccp(size.width /2 , size.height/2); 

    //Check if it's already been added to the layer. 
    if ([self getChildByTag:50]) 
     [self removeChildByTag:50 cleanup:YES]; 

    // add the label as a child to this Layer 
    [self addChild:label z:0 tag:50]; 
} 

いくつかのサンプルコードは、私を助けるだろう:)

+0

タグ「50」のマルチプルラベルがある場合、どうすればよいか質問してください。 – jonsibley

+0

@jonsibley:いいえ、私は複数のテキストラベルを持っていることを意味します。別のもの –

答えて

1

initおよび言語変更イベントで呼び出すことのできる別のメソッドを追加できます。 この方法は次のようになります。

- (void)initLocalizableLables 
{ 
    // Remove old labels 
    for (NSInteger i=[children_ count]-1; i>=0; i--) 
    { 
     CCNode *c = [children_ objectAtIndex:i]; 

     if ([c isKindOfClass:[CCLabel class]]) 
     { 
      [c removeFromParentAndCleanup:YES]; 
     } 
    } 

    // Add labels with localization  
    CCLabel* label = [CCLabel labelWithString:AMLocalizedString(@"hello",@"Hello World") fontName:@"Marker Felt" fontSize:32]; 
    ... 
    [self addChild:label z:0 tag:50]; 
} 

- (void)init 
{ 
    ... 
    [self initLocalizableLables]; // add localized labels 
    ... 
} 

- (void)languageDidChange 
{ 
    [self initLocalizableLables]; // remove old localized labels and add new 
} 
+0

ありがとう!しかし私のレイヤーでは、いくつかの 'CCMenuItem'と' CCMenuItemsAndSprite'(ラベルと背景イメージ)を配置しました。理由は: 'index of objectAtIndex(14)、index 15''の範囲外です。 –

+0

コードを投稿してください。万一ユニバーサルソリューションの再帰のようなものが必要でしょう。また、タグプロパティで手動で処理したり、ローカライズ可能なすべてのオブジェクトを変更可能な辞書に入れたりすることもできます。 –

0

一つの解決策は、それぞれが、それらのキーと値として文字列としてタグを使用して辞書を作成し、異なるtagにラベルを与えることです。その後、辞書の各キー(タグ)を繰り返して、を介して各CCLabelを取得するために使用します。最後に、各CCLabelsetString:を呼び出して、新しくローカライズされた文字列を更新します。

+0

ありがとう、私にもコードサンプルの例を教えていただけますか? –

関連する問題