Actionscript 3.0 - 缓动拖拽

Posted

技术标签:

【中文标题】Actionscript 3.0 - 缓动拖拽【英文标题】:Actionscript 3.0 - drag and throw with easing 【发布时间】:2011-02-25 02:52:54 【问题描述】:

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

我已经开始了,但我无法将它带入下一阶段。

我的代码当前在释放鼠标后会抛出动画剪辑,但在鼠标按钮按下时没有缓动。

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

这是我当前的代码:

// 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;

【问题讨论】:

【参考方案1】:

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

我之前没有使用过 TweenLite 库的这一部分,但总体而言,这个库非常棒,它可能会对您有所帮助。

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

更新:抱歉,这个插件似乎是付费俱乐部 greensock 会员的一部分。

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于Actionscript 3.0 - 缓动拖拽的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 在TweenLite中为整个文档设置默认缓动类型

ActionScript 3 TextManager ActionScript 3.0类

ActionScript 3 ActionScript 3.0算术运算符

ActionScript 3 ActionScript 3.0计时器事件

ActionScript 2.0 和 ActionScript 3.0 有啥区别

ActionScript 3 将FlashVars与ActionScript 3.0一起使用