2011-08-15 4 views
4

ゲーム終了時に "game over"というテキストを表示させ、タッチ時にself.stageにaddeventlistenerを追加しました。これがタッチされると、ゲームの最初の画面をロードするイベント関数を実行する必要があります。しかし、画面の中央にある最初の画面では、独自のタッチイベントを持つテキストを再生するためにクリックします。IOS Sparrow Framework:ダブルタッチを防止する方法

シミュレータでは、画面上で画面の中央をクリックすると、自動的にクリックイベントのイベントが記録され、ゲームが開始されます。

- ゲーム開始時に[self removeAllChildren]を使用しているため、クリックしたイベントハンドラがついているとは思いません。また、同じエリアをクリックしてゲームプレイ中にテストし、クリックして再生するためのタッチイベントレコードは正しく表示されませんでした。

編集:

私はそれが最適解だ場合は必ず、このための回避策を作ったが、ありません:

私はNSTimer

[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(attachEventToStart:) userInfo:startTextField repeats:NO]; 

を使用して、時間の間隔の後のonEventタッチスタートを切りましたattachEventToStart:

-(void)attachEventToStart:(NSTimer *)theTimer 
{ 
    SPTextField *startTextField = [theTimer userInfo]; 
    [startTextField addEventListener:@selector(gameStartOnTouch:) atObject:self forType:SP_EVENT_TYPE_TOUCH]; 
} 

これは、誰かがより良い解決策が得られるでしょう

答えて

2

私はタイマーよりも優れた方法を見つけました。

タッチイベントが終了したときに今、アクションだけので、それは次の画面に行われることはありません、たまたま

SPTouch *touchEnded = [[event touchesWithTarget:self andPhase:SPTouchPhaseEnded] anyObject]; 
if (!touchEnded) 
    return; 
SOME GAME START CODE HERE... 

、私はSPTouchPhaseEndedを使用する必要があるので、私はイベントコールバックに次の行を追加しました。これは、html-JSやVisualスタジオに慣れている人にとってkey_upのように機能します。

コールバックパラメータがSPEventではなくSPTouchEventタイプであることを確認してください。

私はここに答えが見つかりました:私はすでに、すべてのオブジェクトを削除していhttp://forum.sparrow-framework.org/topic/event-listeners-getting-called-too-fast

1

あなたのビューの正確な構造や実装についてはわかりませんが、私はあなたのソリューションに代わるものがあると思います。ゲーム開始イベントのタッチに遅延を設定する代わりに、「ゲームオーバー」テキストが表示されているときに無効にしてみませんか?私の経験では、これは私のためにうまくいっていて、もっと自己文書化しています。

+0

をし、それがタッチイベントを削除する必要がありますが、それはないでしょうか?画面上でゲームに触れた後、タッチイベントをクリックして再生する開始画面の負荷と、遅延がない場合にクリックして受け取ったイベントをタッチするので、それが起こっているようです。 key_upイベントと似たtouch_upがありますか?間違ったタッチイベントをトラップしている可能性があります。 –

+0

あなたは、画面上のゲームがゲームの開始画面の上に追加されていないというのに、開始画面が画面から削除され、画面上のゲームが画面に追加されたと言っています。あれは正しいですか?この問題が発生したときに追加コードを投稿してください。私たちはそれを理解できると確信しています。 – EmphaticArmPump

+0

はい、最初の開始画面、次にゲームプレイ、画面上のゲーム、次に開始画面を除きます。各画面で[self removeAllChildren]で削除します。私は私のMacに行くときに私はより多くのコードを投稿します。 –

関連する問題