1

読んでくれてありがとう!

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch * touch = [touches anyObject];

    CGPoint location = [[CCDirector sharedDirector] convertToGL: [touch locationInView:touch.view]];
    CGRect myRect = CGRectMake(100, 120, 75, 113);

    int tjx = sprite.position.x;

    if(CGRectContainsPoint(myRect, location)) {
       tjx ++;            
    }
}

何らかの理由でccTouchesEnded、「スプライト」にアクセスできません。私も CGRectMakeそのように使用しようとしました:

CGRectMake( sprite.position.x, sprite.position.y, sprite.contentSize.Width, sprite.contentSize.Height) 

しかし、スプライトの位置や高さにアクセスできませんでした。init メソッドで宣言され、子に追加されると、宣言されていない「スプライト」が取得され続けます。

助けてください!!ここで本当に単純なものが欠けていると確信しています。

4

2 に答える 2

0

「スプライト」はおそらく init メソッドでローカルに宣言されていますが、クラスのメンバーではありません。

1 つの解決策は、スプライトにタグを付けることです。

sprite.tag = 123; // any arbitrary number to identify this sprite

後で、次を使用してそのスプライトにアクセスできます。

CCSprite* sprite = [self getChildByTag:123];

タグで子を削除するのと似ています: http://www.learn-cocos2d.com/knowledge-base/cocos2d-iphone-faq/learn-cocos2d-public-content/manual/cocos2d-general/14824-how-ノードシーンレイヤーから子を削除する

于 2010-05-23T16:13:33.607 に答える
0

やってみました、

  • [self sprite]
  • self.sprite
  • スプライトがプロパティとして宣言されているかどうかを確認し、合成しましたか?
于 2010-05-18T13:46:45.597 に答える