橡皮筋效果

时间:2014-03-02 21:09:38

标签: math haxe

我正在尝试实现类似于iOS中的橡皮筋效果。我快到了,但我需要一些帮助才能让它变得完美。这是我用HaxeFlixel制作的游戏。

  • 'img'是可拖动的图像。
  • x和y的所有来源都是左上角。

以下是我的代码:

// In main update loop
// If img was clicked
offsetY = Math.abs(img.y -mouseY);

...

if (img.y > 0) {
    img.y = mouseY -(mouseY * .7);
}
else {
    img.y = mouseY -offsetY;
}

它的工作方式与它应该的方式非常相似,但问题是当我开始拖动图像时,它会在“橡皮筋效应”开始之前捕捉到略低于屏幕顶部的位置。如果我能得到的话帮助摆脱攫取它会很棒!

2 个答案:

答案 0 :(得分:6)

我明白了!顺便说一句,这是我发现的算法与苹果公司用于橡皮筋效果的算法非常相似(如果不相同)。

// * x = distance from the edge
// * c = constant value, UIScrollView uses 0.55
// * d = dimension, either width or height
// b = (1.0 – (1.0 / ((x * c / d) + 1.0))) * d

以下是我为解决问题所做的工作:

img.y = (1.0 - (1.0 / (((FlxG.mouse.screenY -offsetY) * .55 / 640) + 1.0))) * 640;

(它的工作方式与我上面发布的部分完全相同)

img.y = mouseY -(mouseY * .7);

但我必须做的就是解决“捕捉”问题,就是从鼠标位置减去y偏移量,呃! ; D,不管怎样,谢谢!

答案 1 :(得分:0)

有点需要更多的背景,但有一点对我来说就是这一行:

  

x和y的所有来源都是左上角。

我只是仔细检查javascript中x和y的原点的值是否在文档/元素的正确上下文中......所以它可能会捕捉到对比捕捉到“true”,文档左上角的原点。 / p>