Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.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
Actionscript 3 AS3/FlashDevelop-在嵌入中使用编译器常量_Actionscript 3_Apache Flex_Flashdevelop - Fatal编程技术网

Actionscript 3 AS3/FlashDevelop-在嵌入中使用编译器常量

Actionscript 3 AS3/FlashDevelop-在嵌入中使用编译器常量,actionscript-3,apache-flex,flashdevelop,Actionscript 3,Apache Flex,Flashdevelop,我想使用一个编译器常量来修改一些嵌入文件的路径,这对于不同的项目(共享相同的源代码)是不同的 即,将此转换为: [Embed(source='mypath/myfile.png')]公共静态常量myimage:Class 变成类似于: [Embed(source=CONFIG::gfx_path+'myfile.png')]公共静态常量myimage:Class 其中CONFIG::gfx_path是'mypath/' 问题是它没有编译(错误:无效元数据)。事实上,您甚至不能这样做:“mypat

我想使用一个编译器常量来修改一些嵌入文件的路径,这对于不同的项目(共享相同的源代码)是不同的

即,将此转换为:

[Embed(source='mypath/myfile.png')]公共静态常量myimage:Class

变成类似于:

[Embed(source=CONFIG::gfx_path+'myfile.png')]公共静态常量myimage:Class

其中CONFIG::gfx_path是'mypath/'

问题是它没有编译(错误:无效元数据)。事实上,您甚至不能这样做:“mypath/”+“myfile.png”,因为它会给出相同的错误


谢谢

不能在嵌入标记(或任何元数据)中使用可执行代码

Embed
元数据标记(以及无数其他特定代码类型)在编译时执行。涉及变量/方法的普通代码在运行时执行。如果您不知道其中的区别,编译时代码将在构建项目时执行,并且实际上是构建的一部分。运行时在应用程序运行时执行


您不能在编译时执行运行时代码,反之亦然。所有嵌入必须在编译时显式定义才能成功。这可能是一件痛苦的事情,但应用程序在编译之前必须准确地知道要嵌入什么。这就是嵌入的全部意义。

您在实现这一点时遇到问题了吗?怎么了?嗨。问题是它没有编译(错误:无效元数据)。事实上,你甚至不能这样做:“mypath/”+“myfile.png”,因为它会给出相同的错误。也许条件编译不是一种方法。设置不同的资产目录,并将其添加到源路径中,构建时需要四个。这可以通过ANT或Maven很好地完成,或者您只需为不同的编译使用不同的配置文件在元数据中。@Flextra可以在元数据中使用编译器常量,所以我希望有一些技巧可以将它们添加到字符串中。可以在元数据中使用编译器常量(我尝试过,它可以工作),所以我希望有一些技巧可以将它们添加到字符串中。它不是运行时代码。这只是一个将2个常量转换为1的技巧。在编译之前,这应该是可行的。您可以使用Loader加载资产吗?这将允许您将字符串与常量组合起来。@xLite它们必须嵌入swfBest中,您可以做的就是将所需的整个字符串设为1个常量,正如您所说的,它与单个常量一起工作。@xLite该常量是一条路径。有数百个文件使用该路径