実行中のアクション内でタッチ検出を無効にするにはどうすればよいですか。プレーヤーがアクション内でクリックしてクリックした場合にキャラクターがスーパーマンのように空を飛ぶことを望まないため、クリックし続けるとキャラクターは着陸しません。メソッド「isDone」を見つけましたが、これはこのメソッドに関連していますか?プレイヤークリック->アクション(アクション内でクリックできません)->アクション終了->もう一度クリック.....それが私が欲しいものです〜
これはあなたの質問に対する最良の答えです:
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
アクションが完了するまでビューでのユーザーインタラクションを無効にしてから、再度有効にします。
タッチを無効にするには
[self.view setUserInteractionEnabled:NO];
タッチを有効にするには
[self.view setUserInteractionEnabled:YES];
次回は、もう少し簡潔にしてみてください。
In Swift 2.2
self.view.userInteractionEnabled = false
Swift 3.0
self.view.isUserInteractionEnabled = false
あなたがCocos2Dの特定のActionクラスについて話しているという大げさな仮定をするつもりです。それが本当なら、すべてのアクションに「isDone」ブール値があり、それが完了したかどうかを確認できることを知っておく必要があります。それがあなたが求めているものであるかどうか私に知らせてください、そして私は例を投稿します、しかしあなたの言葉遣いがとても混乱しているのであなたが何か他のものについて話している可能性が非常に高いです;)
おそらく私はあなたの質問を理解していませんでしたが、これはあなたが探しているものですか?
- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[Superman Fly];
self.isTouchEnabled = NO;
}
- (void)SupermanLanded{
self.isTouchEnabled = YES;
}
タップ入力を「無効」にする領域の上に透明なUIViewをいつでも配置し、タップをリッスンさせ、それらを無視させることができます。入力を再度リッスンする場合は、UIViewを削除(または非表示)します。
ある種の(単純なバージョンの)ブール値を使用して覚えてみませんか。つまり、isInAction = trueであり、アクションが終了した後はisInAction = false .. ..
だから誰かがクリックすると、あなたは次のようなものを使用します
if (!isInAction) {
isInAction=true;
try {
doYourAction;
} catch {
...
} finally {
isInAction=false;
}
}
//コードは、私が意味することを視覚化するためだけに、まだIPhone用にプログラムしていないため、ある種の擬似コードです。