0

ユーザーがタッチして特定のスプライト画像を移動できるようにしたい。これらの行に沿ったもの:

- (void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UITouch *touch in touches)
    {
        CGPoint *location = [touch locationInView:[touch view]];
        location = [[CCDirector sharedDirector] convertToGL: location];
        if (CGRectContainsPoint(sprite.boundingBox, location)
        {
            sprite.location = ccp(location.x, location.y);
        }
    }
}

もちろん、これは私にとってはうまくいきません.CCSpriteを継続的に移動するためにこのメソッドに対して実行されているtickメソッドがないためです. メソッド ccTouchMoved は知っていますが、実装方法がわかりません。例を教えていただければ幸いです。

4

3 に答える 3

4

タッチを自動で検出できるのは CClayer だけです。したがって、ティックごとに処理する必要があります。そして、それはccTouchesMove..のようなものでなければなりません:

-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"begin");
}

-(void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{    
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView: [touch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];

    sprite.position = location;
}

-(void)ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    NSLog(@"Ended");
}

もちろん、あなたの初期化では、設定する必要がありますself.isTouchEnabled = YES;

于 2011-03-21T11:53:05.667 に答える
2

スプライト イメージは、次の方法でシーンにドラッグできます。

-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
    CGPoint location = [self convertTouchToNodeSpace: touch];
    sprite.position = location;
}
于 2011-08-02T02:27:55.510 に答える
1

以下のコードに従ってコードを変更してください。それは私のために働いています。

UITouch * touch = [touches anyObject];
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
if (CGRectContainsPoint(sprite.boundingBox,location)){
    [sprite setPosition:location];

}
于 2011-11-24T12:13:55.203 に答える