年年花不同,网页游戏广告特别多。一些物体随鼠标小范围移动的效果特别常见,另一种是大对象移动(对象的宽或高大于舞台的情况)。这两种类型的移动的算法差不多。下边是大对象移动的算法。

在这里,所移动的是一个范围。通过缓动来实现对象的展示。因此,对于大对象的移动,初始化的时候,让对象居中,并先一步计算对象移动的范围。这里移动的范围是指对象在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;
		}
	}
	
}