自從我在一年前開始使用AS3以來,這一直在困擾着我。如何引用AS3中的動態實例化對象? (在舞臺上添加了Moviclip)
例子。我作出這樣的延伸的影片剪輯,並稱之爲類「LoaderBar
」全是一些文字,上面寫着「加載」和它下面的其它影片剪輯這是一個普通的矩形,我稱之爲「lBar
」
當我打電話一個函數來加載我的形象我的裝載機添加到舞臺等..
function imageLoader(URL:String):void
{
var loader:Loader = new Loader(new URLRequest(URL));
loader.contentLoaderInfo.addEventListner(ProgressEvent.PROGRESS, progressHandler);
var loadBar:Loader Bar = new LoaderBar();
addChild(loadBar);
}
function progressHandler(e:Event):void
{
var pcent:Number = e.getBytesLoaded/e.getBytesTotal;
// HERE IS WHERE I'D LIKE TO MAKE DIRECT REFERENCE TO MY LOADBAR;
loadBar.lBar.width = pcent*100;
}
基本上我只是想告訴lBar
在加載欄影片剪輯是百分比* 100的寬度。 (所以當剪輯被加載時,加載條寬度爲100像素)。
我的問題是這樣的。當我加載欄添加到舞臺上的功能裏面,我不能讓另一個函數中引用它,而不做一些黑客使我之類的函數之外的全局變量...
var loadBarClip:MovieClip;
和負載內功能等
loadBarClip = loadBar.
我覺得這是多餘的分配loadBar
到loadBarclip
。有沒有人知道無論如何訪問我loadBar
沒有參考變量?
喜歡它! RE:腳註,出於某種原因,我已經適應了從基地控制一切的喜好。我覺得我並沒有深入課堂去看看自己在做什麼,而是從家裏出發,並從頭開始控制所有事情。我並不總是這樣做,我想這不是我的OOP,但我剛剛開始。再次感謝,真棒技巧。 – 2009-10-04 03:04:01
哦,這個規則!它效果很好。 通過這種方式,我還可以通過爲Event.COMPLETE添加另一個處理程序來完成加載操作時刪除加載程序。 你只是改變了我寫我的加載事件處理程序的方式。 – 2009-10-04 03:26:09
我很高興你喜歡它。我認爲它很乾淨,並且在使用匿名函數時使事情變得可讀性和組織性。對於事件,我只在被重用時使用命名函數。還要注意,對於我提到的閉包,應該將'returnFromEncapsulatingClosure'命名爲適用於您的上下文的東西,並且可以取出命名的變量並將'new'語句正確放入返回的對象中。 – dlamblin 2009-10-04 22:27:39