Actionscript 3.0 - 使用缓动拖动和抛出

时间:2010-05-28 12:43:06

标签: flash actionscript-3 draggable drag throw

我在flash中创建了一个地图,我希望有一个类似于此的平滑运动: http://www.conceptm.nl/

我已经开始了,但我很难将它带到下一阶段。

鼠标释放后,我的代码当前会抛出movieclip,但鼠标按钮关闭时没有缓动。

关于如何实现这一目标的任何提示?

这是我目前的代码:

// Vars
var previousPostionX:Number;
var previousPostionY:Number;
var throwSpeedX:Number;
var throwSpeedY:Number;
var isItDown:Boolean;

// Event Listeners
addEventListener(MouseEvent.MOUSE_DOWN, clicked);
addEventListener(MouseEvent.MOUSE_UP, released);

// Event Handlers
function clicked(theEvent:Event) {
isItDown =true;
addEventListener(Event.ENTER_FRAME, updateView);
}

function released(theEvent:Event) {
    isItDown =false;
}

function updateView(theEvent:Event) {
    if (isItDown==true){
        throwSpeedX =  mouseX - previousPostionX;
        throwSpeedY =  mouseY - previousPostionY;
        mcTestMovieClip.x = mouseX;
        mcTestMovieClip.y = mouseY;
    }
    else{
    mcTestMovieClip.x += throwSpeedX;
    mcTestMovieClip.y += throwSpeedY;
    throwSpeedX *=0.9;
    throwSpeedY *=0.9;
    }
    previousPostionX= mcTestMovieClip.x;
    previousPostionY= mcTestMovieClip.y;
}

2 个答案:

答案 0 :(得分:1)

我建议使用加速而不是速度。你需要至少三点才能获得加速。您可以添加一些摩擦力,使您的物体看起来更重。

之前我没有使用过TweenLite库的这一部分,但总体来说这个库是不可思议的,它可能会帮助你。

http://www.greensock.com/as/docs/tween/com/greensock/plugins/Physics2DPlugin.html

更新:对不起,看起来这个插件是付费俱乐部绿色库存会员资格的一部分。

答案 1 :(得分:0)

greensock的那些人现在已经开发了ThrowPropsPlugin来处理这件事。