Re: [問題] 請問關於AS3的預載

看板Flash作者 (CJ Cat)時間17年前 (2008/07/28 11:50), 編輯推噓3(301)
留言4則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《goodray (RAY)》之銘言: : 請問AS3還是可以這樣寫嗎?還是一定要用另外一個負責載入的 : swf檔來載入主要的swf檔,才能夠作loading bar的效果呢? 先知道,任何需要載入(無論是外部或者內部)的元件(包括.swf檔案) 被載入者(content)與載入者(loader)之間一定會有個LoaderInfo物件存在 它們之間的關係是這樣的: Loader ───────────── Content │ │ │ │ └───── LoaderInfo ─────┘ contentLoaderInfo→ ←loaderInfo LoaderInfo是個EventDispatcher 一切載入的相關數據都由它的事件提供 所以你說的兩種方法都可以做到 只是看你要把誰當作loader,誰當作content而已 1.載入寫在第一格 →相當於stage是loader,.swf本身是content 所以第一格就這樣寫: this.loaderInfo.addEventListener(ProgressEvent.PROGRESS, p); this.loaderInfo.addEventListener(Event.COMPLETE, c); function p(e:ProgressEvent):void { //載入條的長度 loadingBar_mc.scaleX = e.bytesLoaded / e.bytesTotal; } function c(e:Event):void { //載入完成之後想要做的事情 } 2.用一個.swf載入另外一個.swf →相當於載入者裡面的Loader物件是loader,被載入的.swf則是content 寫法大概是這樣: var loader:Loader = new Loader(); loader.contentLoaderInfo.addEevntListener( ProgressEvent.PROGRESS, p); loader.contentLoaderInfo.addEventListener( Event.COMPLETE, c); //載入外部.swf loader.load(new URLRequest("content.swf")); function p(e:ProgressEvent):void { //載入條的長度 loadingBar_mc.scaleX = e.bytesLoaded / e.bytesTotal; } function c(e:Event):void { //載入完成之後想要做的事情 //通常是將載入進來的content加到display list上面 addChild(e.content); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.87.91

07/28 11:53, , 1F
感謝,我馬上去試試看 :D
07/28 11:53, 1F

07/28 11:57, , 2F
不好意思,我把上面的程式碼放在第一個影格,會出現如下:
07/28 11:57, 2F

07/28 11:57, , 3F
1046: 找不到 Type,或它不是編譯時期常數:ProgressEvent
07/28 11:57, 3F

07/28 12:05, , 4F
原來要import這個事件類別,總算搞定了,太感謝您了!
07/28 12:05, 4F
文章代碼(AID): #18ZK88zz (Flash)
文章代碼(AID): #18ZK88zz (Flash)