0

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

这是我的代码:

- (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 轴上单击并上下拖动精灵。我希望精灵靠近屏幕顶部,处于纵向模式。

我不希望每次您在不同位置触摸屏幕时都会出现“弹出”或“跳跃”。

任何指针将不胜感激。

4

1 回答 1

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];    
}
于 2012-07-23T15:30:36.577 回答