誰かが私を助けてくれませんか。CCSprite をドラッグ (左/右) してプレイヤー キャラクターを移動できる移動コントローラーとして使用しようとしています。問題は、CCSprite の外側に触れると、まだ Active として検出されることです。これは、ccTouchBegan で ACTIVE を設定し、ccTouchEnded メソッドで IDLE を設定した列挙型です。デフォルトでは IDLE 状態です。CCSprite の外でタッチを開始したときにアクティブになる理由がわかりません。
お知らせ下さい。
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
BOOL touched = NO;
CGPoint loc = [touch locationInView: touch.view];
loc = [[CCDirector sharedDirector] convertToGL: loc];
//avatar is a CCSprite...
//inside of IF statement should not execute if I touch anywhere on screen
//outside of self.avatar sprite, but it still executes....
if ( CGRectContainsPoint( [self.avatar boundingBox], loc) );
{
self.state = ACTIVE;
self.action = MOVE_STOPPED; //player decides which direction to move, based on action state
self.currPoint = self.prevPoint = self.avatar.position;
touched = YES;
}
return touched;
}