2012-01-17 5 views
0

私は、残りのゲームコードと統合されたブレットエンジンの取得に取り組んでいます。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」

答えて

1

に応答しないことがあります また、プレイヤーのinitメソッドでbulletCacheを初期化する必要が

その後BulletCacheクラスの任意のインスタンスメソッドを呼び出すことができます。。

[bullectCache somemethod] 

いくつかの方法がBulletCacheクラス

+0

THXの方法で交換する必要があります! initメソッドでbulletCacheを初期化するにはどうすればよいですか?私は一般的な要点を得るが、どのメソッドを使って初期化するか。 - (id)init { BulletCache * bulletCache = [BulletCache init]; } Playerクラス内でそのクラスを初期化するために他にどのような方法を使用できるかわかりません。 – GPP

+1

インスタンス変数として宣言した場合は、bulletCache = [BulletCache init];を実行するだけです。 Playerクラスのinitメソッドまたはsceneメソッドで使用します。 – Shubhank

+0

私は を追加しました。bulletCache = [BulletCache init]; メソッドをPlayerのinitメソッドに追加しましたが、無限ループが作成され、アプリケーションがクラッシュしました。どんな助け? – GPP

関連する問題