2009-07-23 11 views
2

本当に申し訳ありませんが、ココス2dタッチ検出について質問されています(this答えが含まれています)。しかし、私は仕事をすることができません。私は私自身の質問をするのではなく、私がリンクした答えにコメントしたでしょうが、私はコメントを残すのに十分な担当者がいません。cocos2dの画面*のどこにでもタッチを検出できますか?

私がやりたいことは、ユーザーが画面上の任意の場所をタップするとすぐにアニメーションを停止することです。私は、レイヤファイルとcocosNodeファイルで、両方BOOLvoidccTouchesBegantouchesBeganを試してみた

- (BOOL)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Touches Began"); 
    UITouch *touch = [touches anyObject]; 
    CGPoint location = [touch locationInView: [touch view]]; 
    location = [[Director sharedDirector] convertCoordinate: location]; 

    CGRect mySurface = (CGRectMake(100, 100, 320, 480)); 
    if(CGRectContainsPoint(mySurface, location)) { 
     NSLog(@"Event Handled"); 
     return kEventHandled; 
     [[Director sharedDirector] stopAnimation]; 
     } 
    return kEventIgnored; 
    NSLog(@"Event Ignored"); 

} 

、および他の多くのもの:

はここに私のこれまでのコードです。何も起こりません。ログには何も表示されず、アニメーションは愉快なやり方で続けられます。私は間違って何をしていますか?

答えて

2

主な問題は、の前に、return kEventHandled;の後にあることです。 returnは呼び出されるとすぐに関数を終了するので、決して到達することはありません。

残りのコードをチェックするために私のMacを私の目の前に置いていませんが、それは問題ないと思いますので、それが主な問題です。 NSLog(@"Touches Began");が表示されない場合はCocosNodeLayerにこれを行う必要があります。

NSLog(@"This layer was touched at %@", NSStringFromCGPoint(location)); 
+0

私は」:あなたのような何かができるよう

別の有用な事は(あなたがタッチを見ている一度)、あなたは簡単に表示し、CGPointの値をデバッグすることができますNSStringFromCGPoint関数でありますどのような伸びを意味するかはわからない。私は@interface GameLayerをやっていますか?層または@interfaceノード:CocosNode ? – Evelyn

+0

私はあなたのコードが正しいと思う、それはちょうど戻り行の上にstopAnimation行を移動する必要があり、最後のNSLogと同じです。それ以外の場合は、そのコードには決して達しません。それで最初に修正してください。 –

+0

私はそれを行いましたが、それでも何もしませんでした... – Evelyn

関連する問題