iT邦幫忙

0

AS3 迴圈產生圖片

我想用讀取圖片,然候利用迴圈的方式把五張圖片並排,但是執行結果總是只有最後一張圖片出來,不知道問題出在哪個環節,以下是程式碼。
請知道的前輩指導我,謝謝。

var re:URLRequest=new URLRequest("001.jpg");
var lo:Loader=new Loader();
lo.load(re);
lo.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
function com(event:Event):void {
	
	for (var i=1; i<5; i++) {
	var mc:Sprite=new Sprite();
	mc.addChild(lo);
	var sp:DisplayObject=this.addChild(mc);
	sp.name="m"+i;
	sp.width=50;
	sp.height=50;
	sp.x=10+50*i;
	}
}

2 個回答

38
a2279871
iT邦新手 5 級 ‧ 2009-03-22 18:55:22
最佳解答

var re:URLRequest=new URLRequest("001.jpg");//這邊只讀了001.jpg
var lo:Loader=new Loader();
lo.load(re);
lo.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
function com(event:Event):void {

for (var i=1; i<5; i++) {
var mc:Sprite=new Sprite();
mc.addChild(lo);
var sp:DisplayObject=this.addChild(mc);
sp.name="m"+i;
sp.width=50;
sp.height=50;
sp.x=10+50*i;
}
}

/***************************************************************************/
可以改成這樣試試看
var re:URLRequest=new URLRequest("1.jpg");
var lo:Loader=new Loader();
lo.load(re);
lo.contentLoaderInfo.addEventListener(Event.COMPLETE,com);
var i:int=1;
function com(event:Event):void {
var sp:DisplayObject=lo.content;
this.addChild(sp);
sp.name="m"+i;
sp.width=50;
sp.height=50;
sp.x=10+50*i;

lo.unload();

i++;
if(i<15)
lo.load(new URLRequest(i+".jpg"));
//1.jpg、2.jpg....10.jpg、14.jpg、15.jpg
//讀完一張再讀下一張,一直讀下去
}
}

32
fillano
iT邦超人 1 級 ‧ 2009-03-23 11:37:10

另一種嘗試,是用anonymous function來解決迴圈中i直的問題:

&lt;pre class="c" name="code">
&lt;?xml version="1.0"?>
&lt;!-- Simple example to demonstrate the Button control. -->
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
	&lt;mx:Script>
	&lt;![CDATA[
	import flash.display.Loader;
	import flash.net.URLRequest;

	function init():void {
		var i:int;
		var re:URLRequest;
		var lo:Loader;
		for (i=1; i&lt;9; i++) {
			re=new URLRequest("bg/char"+i+".gif");
			lo=new Loader();
			lo.load(re);
			(function (lo:Loader,i:int):void {
				lo.contentLoaderInfo.addEventListener(Event.COMPLETE, function (event:Event):void {
					var mc:Sprite=new Sprite();
					mc.addChild(lo);
					var sp:DisplayObject=stage.addChild(mc);
					sp.name="m"+i;
					sp.width=55;
					sp.height=70;
					sp.x=10+55*(i-1);
				});
			})(lo,i);
		}
	};
	]]>
	&lt;/mx:Script>
&lt;/mx:Application>

我用了八個放在bg目錄下的gif檔案,每個寬55,高70。做出來的結果如下:
http://www.fillano.idv.tw/test002.html

我要發表回答

立即登入回答