如何仅在Cocos2d中单击并拖动Y轴上的精灵?

时间:2012-07-23 09:50:22

标签: cocos2d-iphone click drag

我想知道是否有人可以帮助我,并可能指出我正确的方向。

这是我的代码:

- (void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:[touch view]];
    point = [[CCDirector sharedDirector] convertToGL:point];
    sprite.position = ccp (sprite.x, point.y);
}

这就是我想要做的事情。

我想单击并在Y轴上上下拖动精灵。我希望精灵靠近屏幕的顶部,这是纵向模式。

每次在不同的地方触摸屏幕时,我都不希望“弹出”或“跳过”。

任何指针都会非常感激。

1 个答案:

答案 0 :(得分:0)

使用矢量。此代码示例使用目标触摸代理而不是标准代码。使newPos x属性始终相同以实现您的行为。

- (void)panForTranslation:(CGPoint)translation {    
    if (selSprite) {
        CGPoint newPos = ccpAdd(selSprite.position, translation);
        selSprite.position = newPos;
    }
}

- (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {       
    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];

    CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
    oldTouchLocation = [[CCDirector sharedDirector] convertToGL:oldTouchLocation];
    oldTouchLocation = [self convertToNodeSpace:oldTouchLocation];

    CGPoint translation = ccpSub(touchLocation, oldTouchLocation);    
    [self panForTranslation:translation];    
}