我正在尝试根据平板电脑的加速度计进行斩波动作并使用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);
}
答案 0 :(得分:0)
在函数的执行顺序中,只要设置knife.y += targetY;
,if (knife.y >0)
返回true并将knife.y设置回原始位置。因此刀看起来好像从未动过。
您应该使用onEnterFrame更新功能来缓解刀具朝向目标位置。然后在你的onAccUpdate函数中,如果刀需要移动将targetY设置到新位置。在您的更新功能中,一旦刀具到达新位置,将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