年年花不同,网页游戏广告特别多。一些物体随鼠标小范围移动的效果特别常见,另一种是大对象移动(对象的宽或高大于舞台的情况)。这两种类型的移动的算法差不多。下边是大对象移动的算法。
在这里,所移动的是一个范围。通过缓动来实现对象的展示。因此,对于大对象的移动,初始化的时候,让对象居中,并先一步计算对象移动的范围。这里移动的范围是指对象在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; } } }