思路:as2中载入图片可以用 MovieClipLoader类,as3中载入图片可以用Loader类;边框的实现可以用Drawing API来实现如lineStyle,lineTo等等...
先看As2的做法:(老外的代码)
//创建一个空剪辑,以便载入图片1111.jpg,1111.jpg是跟源文件同一目录下的。 this.createEmptyMovieClip("image_mc", 1); //创建一个监听器监听MovieClipLoader类的onLoadInit事件 var mclListener:Object = new Object(); mclListener.onLoadInit = function(target_mc:MovieClip) { //空剪辑位置舞台居中 target_mc._x = Stage.width/2-target_mc._width/2; target_mc._y = Stage.height/2-target_mc._height/2; var w:Number = target_mc._width; var h:Number = target_mc._height; //画边框 target_mc.lineStyle(10, 0x00FFFF, 100, true, "normal", "square", "miter", 10); target_mc.moveTo(0, 0); target_mc.lineTo(w, 0); target_mc.lineTo(w, h); target_mc.lineTo(0, h); target_mc.lineTo(0, 0); //旋转角度 //target_mc._rotation = -2; }; var image_mcl:MovieClipLoader = new MovieClipLoader(); image_mcl.addListener(mclListener); image_mcl.loadClip("1111.jpg", image_mc);
As3做法:(参考了闪吧论坛:http://space.flash8.net/bbs/thread-349125-1-1.html)在As3中,如果把边框看成是一个矩形,那么还可利用drawRect()来画边框:
package { import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import flash.display.LoaderInfo; import flash.events.Event; /** * ... * @author $(DefaultUser) */ public class LoadIMG extends Sprite { private var load:Loader; private var sprite:Sprite; public function LoadIMG() { init(); } private function init():void { load = new Loader(); //创建一个容器以便保存加载进来的图片 sprite = new Sprite(); addChild(sprite); load.load(new URLRequest("1111.jpg")); load.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); } private function onLoadComplete(evt:Event):void { //通过load的content属性来访问被加载的图片,然后将图片加入到容器的显示列表 sprite.addChild(load.content); var w:Number = sprite.width; var h:Number = sprite.height; ///* //直接画边框 sprite.graphics.lineStyle(10, 0xff0000, 1,true, "normal", "square", "miter", 10); sprite.graphics.moveTo(0, 0); sprite.graphics.lineTo(w, 0); sprite.graphics.lineTo(w, h); sprite.graphics.lineTo(0, h); sprite.graphics.lineTo(0, 0); //*/ /* //画矩形 sprite.graphics.lineStyle(10, 0xff0000, 1); sprite.graphics.drawRect(0, 0, w, h); */ //设置容器位置舞台居中 sprite.x = stage.stageWidth / 2-sprite.width/2; sprite.y = stage.stageHeight / 2-sprite.height/2; } } } 总结:这里涉及的问题是当一个对象被载入后该如何去控制它?在As2中不考虑对象的显示问题,只需把对象载入一个MC,然后控制这个MC就可以了;As3中先得考虑显示的问题,用Loader类载入对象(设Loader类的实例是loader),直接可以将Loader类加入当前类的显示列表显示,或者将Loader类加入其他容器的显示列表,比如有个容器:sprite:Sprite,你可以这样:sprite.addChild(loader),也可以这样sprite.addChild(loader.content);这两者都可以显示出对象,而后者才是对显示对象的引用。
|