0

Ok。CCMenuAdvancedがどのように機能するかを正確に理解するために、新しいCocos2Dテンプレートを開始しています。物理演算のないCocos2D2.1b2プロジェクトから開始し、CCMenuAdvanced.hファイルとCCMenuAdvanced.mファイルをプロジェクトに追加し、HelloWorldLayer.m initメソッドからボイラープレートコードを削除すると、すべてが正常に実行されます。黒い画面。すべてのライブラリを必要に応じてインポートしたように見えます。CCMenuAdvanceに関係するものを入力すると、オートコンプリートが実行されるため、正常に機能しているように見えます。これが私がHelloWorldLayerinitメソッドに入れたすべてです:

CCMenuItemImage *scrollableSprite = [CCMenuItemImage itemWithNormalImage:@"640x2272ScrollableImage.png"
                                                    selectedImage:@"640x2272ScrollableImage.png"
                                                           target:self
                                                         selector:@selector(iDunnoYet)];

予想どおり、未使用の変数「sprite」警告を使用してコンパイルおよび実行されますが、正常に実行されます。このコード行をプロジェクトに追加するとすぐに、別の未使用の変数エラー(メニュー)が発生することが予想されます。

CCMenuAdvanced *menu = [CCMenuAdvanced menuWithItems:scrollableSprite, nil];

このエラーが発生します:

Undefined symbols for architecture i386:
  "_OBJC_CLASS_$_CCMenuAdvanced", referenced from:
      objc-class-ref in HelloWorldLayer.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

私はその行をコメントアウトしました、そして再び、それはうまく構築されて実行されます。このエラーをスローする可能性のある2つの異なることを読みました。1)プロジェクトにファイルまたはライブラリを2回インポートしたこと、および2)ビルド設定に必要なライブラリが適切に含まれていないことです。最初に、ヘッダーを確認しましたが、問題はありません。HelloWorldLayer.hファイルにCCMenuAdvanced.hファイルを#importしただけです。第二に、これは上記のコード行がなくても正常に機能するCocos2Dテンプレートであるため、必要なすべてのライブラリがすでに含まれているはずです。

とにかく、誰かが私を正しい方向に向けることができれば、私はそれをいただければ幸いです。前もって感謝します。もちろん、必要に応じて、より多くのコードを提供できます。

4

1 に答える 1

1

CCMenuAdvanced.mがプロジェクトのターゲットに追加されていることを確認します。ファイルを選択し、ユーティリティビューを開いて、ファイルのターゲットメンバーシップを確認します。ファイルの横にチェックボックスがあるはずです。このような:

ここに画像の説明を入力してください

于 2012-11-14T00:02:43.137 に答える