[转] 鼠标缓动跟随
http://bbs.9ria.com/viewthread.php?tid=81628&extra=page%3D1%26amp%3Borderby%3Ddateline%26amp%3Bfilter%3D2592000
发个小小的鼠标缓动跟随效果,看了《Making Things Move》后将里面的鼠标跟随扩展了一下
EaseToMouse.as
package animation.trigonometry { import flash.display.Bitmap; import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; /** * @author Maliu */ public class ArrowByLoad extends Sprite { private var _imgURL:String = "arrow-alt-right-black.png"; private var _bitmap:Bitmap; public function ArrowByLoad() { loadImg(); } private function loadImg():void { var loader:Loader = new Loader(); var request:URLRequest = new URLRequest(_imgURL); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded); loader.load(request); } private function loaded(e:Event):void { _bitmap = e.target.content as Bitmap; _bitmap.smoothing = true; //将Bitmap属性smoothing设为true后消除锯齿,默认为false this.addChild(_bitmap); _bitmap.x = -_bitmap.width/2; _bitmap.y = -_bitmap.height/2; dispatchEvent(e); //加载完成后发送事件,用于外部侦听事件,解决异步问题 } }}这里使用外部加载的图像,如果在EaseToMouse.as初始化后直接设定ArrowByLoad类对象的scale值和alpha值,会发现并不能成功改变ArrowByLoad类对象的大小和透明度,因为EaseToMouse.as代码的执行和ArrowByLoad.as加载外部图像的代码执行为异步的,因此要在EaseToMouse内对加载完成事件进行监听才能成功改变scale值和alpha值。
当然,不加载外部图像,直接调用库中元件或者用[Embed]标签嵌入外部图像就不必要在EaseToMouse类中对加载行为进行监听了。