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

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

  • 这是我有atm的代码:
    // 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;
    }
    

    它的工作方式大致上应该如此,但是问题是,当我开始拖动图像时,它会在“橡皮筋效果”开始播放之前捕捉到屏幕顶部下方的某个位置。如果我可以得到帮助,摆脱抢购将是很棒的!

    最佳答案

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

    // * 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偏移,du! ; D还是谢谢你!

    关于math - 橡皮筋效果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22133503/

    10-11 06:47