如何以正确的方式在Actionscript 3/Flex 3中嵌入图像?

Tom*_*Tom 13 resources image flex3 actionscript-3 embedded-resource

我正在创建一个游戏,其中很多图像都在Actionscript/Flex 3(Flash)中使用.现在我已经到了设计师舞台,我必须制定一种使用嵌入式图像的结构方法(必须通过旋转,颜色等进行操作).

不幸的是,经过一番调查后,您似乎必须手动嵌入图像才能使用它们.我目前的设置如下:

Resource.as类文件:

package
{
    public final class Resource
    {
        [Embed (source="/assets/ships/1.gif" )]
        public static const SHIPS_1:Class;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,我只需要一艘船就可以:

将图像放在具有正确名称的正确文件夹中在Resource.as文件中以相同方式命名它在Resource.as文件中创建具有相同名称的常量

即使只是将文件放在指定的文件夹中,这一切都是可能的.

更糟糕的是,我仍然需要使用:

var test:Bitmap = new Resource.SHIPS_1();
Run Code Online (Sandbox Code Playgroud)

在创建非常庞大的应用程序时,必须有更好的方法来处理资源?想象一下,我需要成千上万的图像,这个系统根本不适合.

gmj*_*gmj 16

如果您需要处理大量资源,可以按照以下3个步骤操作:

  1. 将它们放在未压缩的zip存档中

  2. 将zip文件嵌入为二进制数据:

    [Embed(source ='resources.zip',mimeType ='application/octet-stream')]

  3. 使用FZip访问资源

如果您选择涉及加载外部文件的其他方法,请注意某些Flash游戏网站要求其托管的游戏包含在单个swf文件中.


Adr*_*scu 6

代替

var test:Bitmap = new Resource.SHIPS_1();
Run Code Online (Sandbox Code Playgroud)

使用

myImage.source = Resource.SHIPS_1;
Run Code Online (Sandbox Code Playgroud)

嵌入是正确的.:D你使用它的方式是错的:)

阿德里安

  • 您不需要实例化Resource,您将SHIPS_1定义为静态常量,因此您只需将其用作adrian指出的源. (2认同)

Iai*_*ain 5

这就是Flash CS4的用途.你的方式对我来说似乎很好 - 虽然我不会使用全部大写的类名,即使它是一个常数.只要低下头,就可以复制粘贴!

或者,您可以在运行时加载文件.

  • 每个人(使用正确的工具和知识)总是能够下载您的内容,"下载以显示您想要的方式"和"下载以便以其他方式存储"在技术上是相同的.你可以让它变得更难,但不要欺骗自己认为不能或不会这样做. (9认同)
  • 在运行时加载文件时+1.否则,你可能会得到比你真正需要的更大的SWF. (2认同)