flash 设计记录:图片队列
发布时间:2020-12-15 06:52:10 所属栏目:百科 来源:网络整理
导读:package {import flash.display.Sprite;import flash.events.*;import flash.display.Loader;import flash.net.URLRequest;import flash.display.Bitmap;public class Main extends Sprite{private var loaderMap:Array = [];public function Main(){ addIma
package { import flash.display.Sprite; import flash.events.*; import flash.display.Loader; import flash.net.URLRequest; import flash.display.Bitmap; public class Main extends Sprite { private var loaderMap:Array = []; public function Main() { addImage("images/1.jpg"); addImage("images/2.jpg"); addImage("images/3.jpg"); addImage("images/4.jpg"); next(); } //添加图片 private function addImage(path:String):void { var loader:Loader=new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onError); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress); var data:Object={loader:loader,path:path}; loaderMap.push(data); } //下一张图片 private function next():void { if(loaderMap.length>0) { var data:Object=loaderMap.shift(); trace(data["path"]); data["loader"].load(new URLRequest(data["path"])); } } private function onComplete(event:Event):void { event.currentTarget.removeEventListener(Event.COMPLETE,onComplete); event.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR,onError); event.currentTarget.removeEventListener(ProgressEvent.PROGRESS,onProgress); var bitmap:Bitmap = event.currentTarget.content as Bitmap; bitmap.x=Math.random()*stage.stageWidth; bitmap.y=Math.random()*stage.stageHeight; addChild(bitmap); next(); } private function onError(event:IOErrorEvent):void { trace("错误了"); } private function onProgress(event:ProgressEvent):void { trace(int(event.bytesLoaded/event.bytesTotal*100)+"%"); } } }
?? 以上代码设计比较简单,因为希望写的简单一些。而着重是看设计,这种设计技巧是一个比较常用的设计。 ?? 例如addImage 记录一个loader 信息,当加载完毕之后 调用next()的方法,这种组合也是比较喜欢一种,不妨试试。 ? 我比较喜欢图片下面加点白色的底,这样看起来会很好看。在加载图片之后,不妨尝试写一个白色容器底,这样子效果更加佳。 ? ? package { import flash.display.Sprite; import flash.events.*; import flash.display.Loader; import flash.net.URLRequest; import flash.display.Bitmap; public class Main extends Sprite { private var loaderMap:Array = []; public function Main() { addImage("images/1.jpg"); addImage("images/2.jpg"); addImage("images/3.jpg"); addImage("images/4.jpg"); addImage("images/5.jpg"); addImage("images/6.jpg"); addImage("images/7.jpg"); addImage("images/8.jpg"); addImage("images/9.jpg"); next(); } //添加图片 private function addImage(path:String):void { var loader:Loader=new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onProgress); var data:Object = {loader:loader,path:path}; loaderMap.push(data); } //下一张图片 private function next():void { if (loaderMap.length > 0) { var data:Object = loaderMap.shift(); trace(data["path"]); data["loader"].load(new URLRequest(data["path"])); } } private function onComplete(event:Event):void { event.currentTarget.removeEventListener(Event.COMPLETE,onProgress); var bitmap:Bitmap = event.currentTarget.content as Bitmap; var photo:PhotoCantainer = new PhotoCantainer(bitmap); photo.x = Math.random() * stage.stageWidth; photo.y = Math.random() * stage.stageHeight; addChild(photo); next(); } private function onError(event:IOErrorEvent):void { trace("错误了"); } private function onProgress(event:ProgressEvent):void { trace(int(event.bytesLoaded/event.bytesTotal*100)+"%"); } } } import flash.display.Sprite; import flash.display.Bitmap; import flash.filters.DropShadowFilter; //图片容器 internal class PhotoCantainer extends Sprite { public function PhotoCantainer(bitmap:Bitmap) { addChild(bitmap); bitmap.x = - bitmap.width / 2; bitmap.y = - bitmap.height / 2; drawBase(bitmap.width,bitmap.height); } //绘制白色底 private function drawBase(w:Number,h:Number):void { this.graphics.beginFill(0xffffff); this.graphics.drawRect(-w/2-5,-h/2-5,w+10,h+10); this.graphics.endFill(); this.filters = [new DropShadowFilter(3,45,0.5)]; } } ? ? ?最后修改一下: package { import flash.display.Sprite; import flash.events.*; import flash.display.Loader; import flash.net.URLRequest; import flash.display.Bitmap; import flash.geom.Point; public class Main extends Sprite { private var loaderMap:Array = []; public function Main() { addImage("images/1.jpg",new Point(100,100)); addImage("images/2.jpg",new Point(200,100)); addImage("images/3.jpg",new Point(300,100)); addImage("images/4.jpg",new Point(400,100)); addImage("images/5.jpg",new Point(500,100)); addImage("images/6.jpg",320)); addImage("images/7.jpg",320)); addImage("images/8.jpg",320)); addImage("images/9.jpg",320)); next(); } //添加图片 private function addImage(path:String,position:Point):void { var loader:SimpleLoader=new SimpleLoader(); loader.positon = position; addChild(loader); loader.x = position.x; loader.y = position.y; loader.addEventListener(Event.COMPLETE,onComplete); loader.addEventListener(IOErrorEvent.IO_ERROR,onError); loader.addEventListener(ProgressEvent.PROGRESS,onProgress); var bitmap:Bitmap = event.currentTarget.content as Bitmap; var photo:PhotoCantainer = new PhotoCantainer(bitmap); var loader:SimpleLoader=event.currentTarget as SimpleLoader; photo.x = event.currentTarget.positon.x; photo.y = event.currentTarget.positon.y; removeChild(loader) addChild(photo); next(); } private function onError(event:IOErrorEvent):void { trace("错误了"); } private function onProgress(event:ProgressEvent):void { var loader:SimpleLoader = event.currentTarget as SimpleLoader; var percent:String = int(event.bytesLoaded / event.bytesTotal * 100).toString() + "%"; loader.showProgress(percent); trace(percent); } } } import flash.display.Sprite; import flash.display.Bitmap; import flash.filters.DropShadowFilter; import flash.display.Loader; import flash.geom.Point; import flash.text.*; import flash.display.Shape; import flash.events.*; import flash.net.URLRequest; import com.greensock.TweenLite; //图片容器 internal class PhotoCantainer extends Sprite { public function PhotoCantainer(bitmap:Bitmap) { addChild(bitmap); bitmap.x = - bitmap.width / 2; bitmap.y = - bitmap.height / 2; drawBase(bitmap.width,bitmap.height); this.alpha=0; this.rotationX=60; TweenLite.to(this,0.5,{alpha:1,rotationX:0}); } //绘制白色底 private function drawBase(w:Number,0.5)]; } } internal class SimpleLoader extends Sprite { public var positon:Point;//位置 private var progressMsg:TextField;//进度文本 private var shape:Shape; private var _content:Object; private var loader:Loader; public function SimpleLoader() { loader=new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,onError); loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,onProgress); } public function load(requst:URLRequest):void { loader.load(requst); } private function onComplete(event:Event):void { clear(); this.content = event.currentTarget.content; this.dispatchEvent(event); } private function onError(event:IOErrorEvent):void { this.dispatchEvent(event); } private function onProgress(event:ProgressEvent):void { this.dispatchEvent(event); } public function set content(value:Object):void { this._content = value; } public function get content():Object { return this._content; } //显示进度; public function showProgress(str:String):void { if (! progressMsg) { drawBase(20); progressMsg=new TextField(); progressMsg.autoSize = TextFieldAutoSize.LEFT; progressMsg.x = -8; progressMsg.y = -8; addChild(progressMsg); } else { progressMsg.text = str; } } private function clear():void { if (this.contains(progressMsg)) { removeChild(progressMsg); } progressMsg = null; this.filters = []; this.graphics.clear(); } //绘制底部 private function drawBase(r:Number):void { this.graphics.beginFill(0xFF8000); this.graphics.drawCircle(0,r); this.graphics.endFill(); this.filters = [new DropShadowFilter(3,0.5)]; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |