年年花不同,网页游戏广告特别多。一些物体随鼠标小范围移动的效果特别常见,另一种是大对象移动(对象的宽或高大于舞台的情况)。这两种类型的移动的算法差不多。下边是大对象移动的算法。
在这里,所移动的是一个范围。通过缓动来实现对象的展示。因此,对于大对象的移动,初始化的时候,让对象居中,并先一步计算对象移动的范围。这里移动的范围是指对象在x轴和y轴方向移动的距离一半。
a.先让对象居中,记录对象的初始坐标,记录对象需要移动的范围。
b.然后,计算对象移动的比例。
c.缓动改变对象的位置。
贴出效果和代码:
package
{
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip
{
private var _mm:Mm
private var _sw:Number ;
private var _sh:Number ;
private var _originalX:Number;
private var _originalY:Number;
private var _recX:Number;
private var _recY:Number;
public function Main()
{
_mm = new Mm();
addChild(_mm);
_mm.x = stage.stageWidth * 0.5 - _mm.width * 0.5;
_mm.y = stage.stageHeight * 0.5 - _mm.height * 0.5;
_recX = _originalX = _mm.x;
_recY = _originalY = _mm.y;
_sw = stage.stageWidth * 0.5;
_sh = stage.stageHeight * 0.5;
addEventListener(Event.ENTER_FRAME,enterHandler);
}
private function enterHandler(e:Event):void
{
var xScale:Number = (mouseX - _sw)/_sw;
var yScale:Number = (mouseY - _sh)/_sh;
_mm.x += ( xScale * _recX + _originalX - _mm.x)/10;
_mm.y += (yScale *_recY + _originalY - _mm.y)/10;
}
}
}