算法是个很有意思的东西,今天运用FLASH中的缓冲常用的计算方法做了个很常见的缓冲移动效果。

具体公式:mc._x += (目标位置-mc._x)*缓冲系数

公式中的缓冲系数就是每次循环靠近给定值或鼠标的系数,而达到缓冲的效果。不同的缓冲系数可以得到不同的运动效果,大家可以自己改动一下这个系数试试运动效果。当然,缓冲系数的值必须小于1,这点很容易在数学上做出解释。

var xPos:Number;
var PLPercentage:Number;
var dist1:Number;
var dist2:Number;
stage.addEventListener(Event.ENTER_FRAME,loop);
function loop(event:Event) {
 if (mouseY>0&&mouseY<stage.height&&mouseX>0&&mouseX<stage.width) {
  xPos=mouseX;
 }
 PLPercentage=xPos/stage.stageWidth;
 dist1 = ((-ren.width + stage.stageWidth) * PLPercentage) - ren.x;
 ren.x+=dist1/4;
 if (ren.x>-1) {
  ren.x=0;
 } else if (ren.x < (stage.stageWidth - ren.width + 1)) {
  ren.x=stage.stageWidth-ren.width;
 }
 dist2 = ((-bg.width + stage.stageWidth) * PLPercentage) - bg.x;
 bg.x+=dist2/10;
 if (bg.x>-1) {
  bg.x=0;
 } else if (bg.x < (stage.stageWidth - bg.width + 1)) {
  bg.x=stage.stageWidth-bg.width;
 }
}

我内心激动,有话要说