0

我正在尝试根据我的平板电脑的加速度计进行斩波动作,并使用 away3D 框显示它。基本上每次用户在加速时摇动设备时我想要做的就是盒子向上移动然后立即向下移动。想一想切刀的动作。现在我有以下代码,但它似乎取消了自己,只是留在同一个地方。任何帮助将非常感激!

protected function onAccUpdate(event:AccelerometerEvent):void{
            var threshold:Number = 1.5;
            if(event.accelerationY > threshold){
                targetY = event.accelerationY *10;
                knife.y += targetY;
                trace(knife.y);
                if (knife.y >0){
                    knife.y -= targetY; 
                    trace(knife.y);
                }
4

1 回答 1

0

knife.y += targetY;在您的函数的执行顺序中,一旦您设置if (knife.y >0)返回 true 并将knife.y 设置回原始位置。因此,这把刀看起来好像从未动过。

您应该使用 onEnterFrame 更新函数来将刀缓到目标位置。如果刀需要将 set targetY 移动到新位置,则在您的 onAccUpdate 函数中。在您的更新函数中,一旦刀到达新位置,将 targetY 设置为 0 并为刀设置动画。

这是 onEnterFrame 代码的示例:

var diff:Number = targetY - knife.y;
knife.y += diff * 0.05; // 0.05 is to ease/smooth the animation
if( Math.abs( diff ) <= 1 ) targetY = 0; // we reached the target position, now go back to 0
于 2013-04-21T14:47:03.010 回答