私は、残りのゲームコードと統合されたブレットエンジンの取得に取り組んでいます。Cocos2dでのクラスメソッドのリンク
これは、プログラムをクラッシュさせることなく、PlayerクラスがBulletCacheクラスからメソッドを呼び出すことができるようにすることから成ります( '認識できないセレクタがインスタンスに送信されました...')。
統合での私の試みは、これまでのインターフェース例えばプレイヤークラスでBulletCacheオブジェクトを作成で構成さ:
@interface Player : LevelObject
{
BulletCache *bulletCache;
}
しかし、私は、コンストラクタは、さらに2つのクラスをリンクするために必要だったと信じていました。どちらもCCNodeのサブクラスですが、どちらのクラスもすぐには関連していません(Playerクラスはいくつかのクラスのサブクラスですが、最終的にはCCNodeのサブクラスです)。
誰かにさらに2つのクラスをリンクする方法について、 PlayerクラスのメソッドはBulletCacheのメソッドを呼び出すことができますか?
編集:私は無限ループになっていた、とコンソールがBulletCacheクラスでCCSprite関連のエラーを報告まま、私はBulletCacheメソッドに次のブレークポイントを置くので:
CCSpriteFrame* bulletFrame = [[CCSpriteFrameCache sharedSpriteFrameCache]
spriteFrameByName:@"bullet1big e0000.png"];
をそして&を構築する」走りましたデバッグ。"メインメニューの 'New Game'ボタンをクリックすると、コンソールにローディングログが表示され、すぐに停止し、コンソールの一番下にメッセージが表示されます。 "GDB:ブレークポイント1で停止(ヒット数:1) init-Line 84 '84行目は私のブレークポイントを置く場所なので、プログラムはこのコードに問題があるようですが、それは間違っていないと思われ、メソッドは一致するはずです。 :-spriteFrameByNameあなたがBulletCacheクラスをインポートしてくださいCCSpriteFrame」
THXの方法で交換する必要があります! initメソッドでbulletCacheを初期化するにはどうすればよいですか?私は一般的な要点を得るが、どのメソッドを使って初期化するか。 - (id)init { BulletCache * bulletCache = [BulletCache init]; } Playerクラス内でそのクラスを初期化するために他にどのような方法を使用できるかわかりません。 – GPP
インスタンス変数として宣言した場合は、bulletCache = [BulletCache init];を実行するだけです。 Playerクラスのinitメソッドまたはsceneメソッドで使用します。 – Shubhank
私は を追加しました。bulletCache = [BulletCache init]; メソッドをPlayerのinitメソッドに追加しましたが、無限ループが作成され、アプリケーションがクラッシュしました。どんな助け? – GPP