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テンプレートであるため、必要なすべてのライブラリがすでに含まれているはずです。
とにかく、誰かが私を正しい方向に向けることができれば、私はそれをいただければ幸いです。前もって感謝します。もちろん、必要に応じて、より多くのコードを提供できます。