kor*_*esh 0 flash bytearray preloader actionscript-3
在整个SWF完全加载之前,编译的SWF不显示预加载器.任何人都会非常感激,我用谷歌搜索整晚都找不到任何东西,至少对我而言.
您无法将其嵌入ByteArray到主文档类中,因为从文档类引用的类将自动包含在第1帧中.
预加载资产的最佳方法是使用单独的Preloader类和Main类.您希望Preloader类在第1帧导出,而Main类和资产在第2帧导出.
不幸的是,这比它应该更复杂,但是你可以这样做:将你的文档类设置为Preloader.该类包含您的loaderInfo代码.但是,当您完成加载时,不要直接实例化Main,即不要这样做var main:Main = new Main().无论你做什么,这都会自动将Main编译到第1帧.相反,间接实例化它,如下所示:
nextFrame(); // you sometimes need to do this for the player to register classes exported on frame 2
var mainClass:Class = flash.utils.getDefinitionByName("Main") as Class;
var main:Sprite = new mainClass();
addChild(main);
Run Code Online (Sandbox Code Playgroud)
这将阻止编译器自动将Main移动到第1帧.
接下来,如果您使用的是Flash CS3 + IDE,请转到文件 - >发布设置 - > Flash-> ActionScript 3.0设置,然后将"在帧上导出类"设置更改为第2帧.然后,在电影的第2帧上,放置一个空的MovieClip.在这个MovieClip中,通过输入以下代码来放置对Main类的引用:var dummy:Main;.你必须这样做的原因是编译器仍然知道你正在使用Main,所以它实际上会将它编译成电影,否则它根本不会编译它.您也不希望将其放在主时间轴上,因为主时间轴上的任何代码引用都会自动被拖到第1帧上.
在IDE中,检查事物是否已在适当位置导出的有用技巧是检查"发布属性" - >"Flash"中的"生成大小报告".您可以检查报告,并且很容易注意到垃圾是否已导出到第1帧.
如果您使用的是Flash Builder,FlashDevelop或FDT,则该过程基本相同 - 创建单独的Preloader和Main类,并从Preloader间接实例化Main.但是要通知编译器在Preloader之后的一个帧上编译Main,请将上面的metatag public class Main放在Main.as:
[Frame(factoryClass="Preloader")]
Run Code Online (Sandbox Code Playgroud)
FlashDevelop还可以通过单击"项目"选项卡中的旁边的+来内省SWF文件.它将显示哪些资产已导出到哪些框架.理想情况下,您只需要在第1帧上使用最少的Preloader.
| 归档时间: |
|
| 查看次数: |
1915 次 |
| 最近记录: |