objective-c - 为什么 mouseDragged 位置落后于实际鼠标?

标签 objective-c macos sprite-kit

我正在尝试制作一个 SpriteKit 游戏,玩家可以在其中拖动 Sprite 组,但我不知道如何让 Sprite 跟随鼠标光标。使用 SpriteKit 样板,我得到了这个:

以下是我如何移动“Hello, world!”的相关逻辑。 SKNode babies

中的 Sprite
SKNode *babies;

-(void)mouseDown:(NSEvent *)theEvent {
    dragStart = [theEvent locationInWindow];
    babiesStart = babies.position;
}

-(void)mouseDragged:(NSEvent *)theEvent {
    CGPoint translation = CGPointMake([theEvent locationInWindow].x - dragStart.x,
                                      [theEvent locationInWindow].y - dragStart.y);
    float adjust = 1.0;
    babies.position = CGPointMake(babiesStart.x + translation.x * adjust,
                                  babiesStart.y + translation.y * adjust);
}

我已经尝试了很多不同的方法,例如 theEvent 上的 deltaX 和 Y,但我得到了相同的结果。我发现的唯一解决方案是使用 adjust 变量,但这显然是一种 hack。

最佳答案

NSEvent在SpriteKit中还有一个方法,- (CGPoint)locationInNode:(SKNode *)node。通过使用它,我能够获得与鼠标一起移动 SKNode 的正确偏移值。

关于objective-c - 为什么 mouseDragged 位置落后于实际鼠标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21219182/

相关文章:

iphone - IOS tableview : stretched image not display until scroll done

macos - OSX 中的问题 "using ls -al --full-time"

arrays - 随机获取数组元素

ios - 为什么没有设置 contactDelegate?

ios - 为什么当我清除数组时内存没有被释放?

ios - 为什么我的委托(delegate)方法从未被调用过?

ios - 什么是伞头?

bash - 使用 sed 删除标点符号和制表符

c++ - 从 CGImage 生成 CCITT 压缩的 TIFF

ios - 带有 SKTexture 的 CIFilter(CIStripesGenerator)?