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计时器事件