0

予想通り、私は Objective-C と Cocoa2d を初めて使用するので、これは痛々しいほど明白かもしれませんが、理にかなった方法で動作させることができないようです。

私がやろうとしているのは、[0,1,2,3] のいずれかの整数でいっぱいの 10 メンバーの配列を作成することです (後でさらに追加されます)。後で、これらの数値をレベル選択画面に使用する必要があります。 0 はレベルがロックされている (未完了) ことを意味し、数値 >0 は星の数 (3 つのうち) を表し、レベルが完了したことを意味します。レベルの最後に、そのレベルを反映するように配列を変更したい完成しました。テスト目的で、配列に「ランダムな整数」(0-3)を入力しました(LevelSelection.m):

NSMutableArray *LevelCompArray = [NSMutableArray arrayWithCapacity:10];
        for(int i = 0; i<10; i++){
            int x= (arc4random() % (4));
            [LevelCompArray addObject:[NSNumber numberWithInteger:x]];
        }

私は配列を割り当てたり初期化したりしていませんが、それ-(id) initが私の問題の根源であると信じていますが、関数自体の中で機能しているようです。

LevelSelection.m私の問題は単純です。この配列 (およびゲームの進行に合わせて作成するその他のデータ) をクラスからクラス (例: からへLevelCompleted.m) および関数から関数 (例:-(id) initおよび)に転送するにはどうすればよいですか-(void) launchLevel。必要なすべてのクラスがアクセスできるデータ用の集中ファイルがありますか? その場合、「.plist」のすべての話は何ですか? そうでない場合、メソッドを介してデータをターゲット クラス/メソッドに転送しますか? それ、どうやったら出来るの?

チュートリアルに私を転送することも非常に役立ちます。

4

2 に答える 2

2

配列のプロパティを使用する必要があります。そのように: 最初に、次のように、secondviewcontroller.h で配列を作成する必要があります。

    NSMutableArray *LevelCompArray;
    @property (nonatomic, retain) NSMutableArray *LevelCompArray;

それを secondviewcontroller.m で合成します。

@synthesize LevelCompArray;

次に、たとえば、FirstViewController のボタンがタッチされたときに Array を渡します。そのアクションでは、次のように、2 番目のビュー コントローラーのインスタンスを取得するように設定できます。

secondViewController.LevelCompArray = someArray;

実際にはビューコントローラー間でデータを渡しています。詳細については、このリンクを確認してください: ビューコントローラー間でデータを渡す

この助けを願っています。

于 2012-07-13T20:59:44.117 に答える
2

あなたが言ったように、それを行う1つの方法は、誰もが持っているファイルに一連のグローバル変数を含めることです#import.plistファイルは使用しません。むしろ、.m他のすべてのソース コードと同じようになります。

必要なオブジェクトのコンストラクターに情報を渡すこともできます。たとえば、次のようなことができます[[LevelSelection alloc] initWithCompletionArray:LevelCompArray]。次に、すべてのオブジェクトが上記の配列に正しい情報を持っていることを確認するには、通知を使用します。

-(id) initWithStuff:(Stuff *s) {
    if(self = [super init]) {
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(doStuff:)
                                                     name:@"LEVEL_COMPLETED"
                                                   object:anObject];
    }

そしてdoStuff:(これは を受け取りますNSNotification*) では、通知のオブジェクトを使用して、何が起こっても処理するためのロジックがいくつかあります。

于 2012-07-13T21:07:04.780 に答える