Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance AS3-了解[嵌入]元数据的工作原理_Performance_Actionscript 3_Embed_Loading_Sprite Sheet - Fatal编程技术网

Performance AS3-了解[嵌入]元数据的工作原理

Performance AS3-了解[嵌入]元数据的工作原理,performance,actionscript-3,embed,loading,sprite-sheet,Performance,Actionscript 3,Embed,Loading,Sprite Sheet,在开发游戏时,我通常使用加载器来加载我的资源,而在与我加载的每个对象进行交互之前,只要加载完成,我就会收听 然而,我发现人们使用嵌入来“加载”图像和精灵表单,以提高性能等等。所以我做了,但我不明白它是如何实时工作的。我的游戏是在网络上运行的,我怎么能确定嵌入的图像已经加载并准备好使用呢?我知道它是在本地运行时编译项目时加载的,但是在web或移动设备上运行时会发生什么 我在做这样的事情: public final class Assests { [Embed(source="../ass

在开发游戏时,我通常使用加载器来加载我的资源,而在与我加载的每个对象进行交互之前,只要加载完成,我就会收听

然而,我发现人们使用嵌入来“加载”图像和精灵表单,以提高性能等等。所以我做了,但我不明白它是如何实时工作的。我的游戏是在网络上运行的,我怎么能确定嵌入的图像已经加载并准备好使用呢?我知道它是在本地运行时编译项目时加载的,但是在web或移动设备上运行时会发生什么

我在做这样的事情:

public final class Assests 
{
    [Embed(source="../assets/character.png")]
    public var Character:Class;
    public var characterBMD:BitmapData = new Character().bitmapData;
}

如果要加载图形色调,该怎么办?当它准备好时,我如何在向用户显示加载屏幕的同时收听,就像通常通过loader类一样。

Embed
,顾名思义,将资产嵌入swf文件本身中。因此,不需要加载,因为它是作为swf文件的一部分加载的(以及嵌入swf中的代码和任何其他资产)。这相当于在Flash Professional中拥有库资源。您的所有资产都是SWF文件的一部分

使用
加载程序
,在swf文件加载后加载到单独的资源中

因此,嵌入将增加swf的大小(并导致整个swf的加载速度变慢)

事后使用
Loader
加载会使初始swf打开更快,然后允许您异步加载,并在加载过程中显示进度条或执行其他操作。它还允许您动态加载内容。因此,您可以确定用户的屏幕分辨率,并为该用户加载更高分辨率的图像(如果他们的系统从中受益)


通常,使用加载程序加载最适合于大型文件。嵌入对于许多小文件或您需要的任何东西都非常有用。

当您使用
[Embed]
时,它将资产编译到SWF中,因此在运行时没有额外的加载。在AS3执行时,资产已准备就绪,可以使用


这加快了初始加载时间,因为加载资产有很多开销[相对而言],当其直接嵌入SWF时,可以跳过这些开销,但是折衷的是SWF本身变得更重,您别无选择,只能用SWF加载嵌入的资产

顾名思义,嵌入将资产嵌入swf。因此,不需要加载,因为它与swf中的所有其他内容一起加载。(就像FlashPro中的库资源一样)我理解,但我看不出它会影响我的主SWF文件大小。有没有办法看清楚它?它会影响大小。您可以使用swf资源管理器查看嵌入的所有资源。如果您有许多资源,我可能会使用sprite工作表或创建swc库来嵌入。我想这意味着我无法执行以下通用嵌入:[Embed(source=“../assets/”+NAME+“/Character.png”)]我想您可以使用编译器常量,尽管我从未尝试过。您的IDE是什么?弯曲FlashDevelop?还有别的吗?您如何确定什么是
名称
。名称是一个目录名,例如,由主类确定。在FlashDevelop中,转到项目属性,然后转到“编译器选项”选项卡。您将在列表中找到一个“编译器常量”数组,您可以在其中输入编译时的常量。例如,
CONFIG::directoryName,myDirectory
。然后,在编译时,在代码中引用
CONFIG::directoryName
的任何位置都将被常量替换。请记住,它们是常量,因此自然不能在任何类中更改它,只能在FlashDevelop的项目属性中更改。