Actionscript 3 动态嵌入swf中的符号?

Actionscript 3 动态嵌入swf中的符号?,actionscript-3,flashdevelop,Actionscript 3,Flashdevelop,我正试图用以下符号嵌入x个符号: [Embed(source='graphics/backgrounds.swf', symbol='background01')] private var Background01 : Class; 问题是,我有100个背景符号,希望嵌入它们,而不是像下面的代码那样编写每一个: [Embed(source='graphics/backgrounds.swf', symbol='background01')] private var Background01 :

我正试图用以下符号嵌入x个符号:

[Embed(source='graphics/backgrounds.swf', symbol='background01')]
private var Background01 : Class;
问题是,我有100个背景符号,希望嵌入它们,而不是像下面的代码那样编写每一个:

[Embed(source='graphics/backgrounds.swf', symbol='background01')]
private var Background01 : Class;

[Embed(source='graphics/backgrounds.swf', symbol='background02')]
private var Background02 : Class;

[Embed(source='graphics/backgrounds.swf', symbol='background03')]
private var Background03 : Class;
相反,我希望使用如下两个循环:

for (var i = 0;i < 10;i++)
{
    for (var j = 0;j < 10;j++)
    {
        [Embed(source='graphics/backgrounds.swf', symbol='background' + i + j )]
        // code for adding this to an 2d-array or something
    }
}
for(变量i=0;i<10;i++)
{
对于(var j=0;j<10;j++)
{
[嵌入(source='graphics/backgrounds.swf',symbol='background'+i+j)]
//用于将其添加到二维数组或其他内容的代码
}
}
这不起作用,因为它告诉我元数据是错误的,所以我的问题是:


可以这样做吗?或者有类似的方法可以做到这一点吗?

我不相信您可以将元指令放入常规代码语句中。它们是您正在编写的类范围内变量声明的一部分


如果编写如此多的变量非常繁重,并且您已经按顺序命名了符号,请在您最喜欢的文本编辑器中编写一个javascript宏(我使用并喜欢ActiveState的KomodoEdit,而且它是免费的)让它吐出可以粘贴到类ActionScript中的文本。

我不相信你可以在常规代码语句中放入元指令。它们是您正在编写的类范围内变量声明的一部分


如果编写如此多的变量非常繁重,并且您已经按顺序命名了符号,请在您最喜欢的文本编辑器中编写一个javascript宏(我使用并喜欢ActiveState的KomodoEdit,而且它是免费的),然后让它吐出可以粘贴到类ActionScript中的文本。

是的,很遗憾地说Marcus,没有办法做你想做的事。元数据不是AS3,也不是经过评估的,因此您不能以您正在尝试的方式使用它

然而,如果你要嵌入100个背景符号,为什么不创建一个单独的MovieClip,每个MovieClip都在时间轴的一个框架上?然后嵌入该符号一次,然后使用gotoAndStop转到所需的符号


不过,对我来说,一开始就把100个背景全部加载到内存中听起来是一种不可靠的方式。更好的方法可能是在你需要背景时,在内存中输入或输出背景。当然,这取决于它们的用途,但“背景”这个名字让我觉得这可能是一个更好的做法。

是的,遗憾的是,马库斯,没有办法做你正在尝试的事情。元数据不是AS3,也不是经过评估的,因此您不能以您正在尝试的方式使用它

然而,如果你要嵌入100个背景符号,为什么不创建一个单独的MovieClip,每个MovieClip都在时间轴的一个框架上?然后嵌入该符号一次,然后使用gotoAndStop转到所需的符号


不过,对我来说,一开始就把100个背景全部加载到内存中听起来是一种不可靠的方式。更好的方法可能是在你需要背景时,在内存中输入或输出背景。当然,这取决于它们的用途,但“背景”这个名字向我暗示,这可能是一个更好的做法。

那么,我如何将它们装入和移出内存:p?也可以从swf中执行此操作吗?您需要将每个背景放在一个单独的swf中,可能命名为background0.swf。。背景。然后您可以使用加载器加载SWF。将加载程序放在stage上,然后是Loader.load(newurlrequest(“backround”+i+“.swf”);。如果要交换背景,请在其后面添加另一个加载程序,使用loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onBackgroundSwap)侦听Event.COMPLETE事件,然后在onBackgroundSwap中删除以前的背景。希望这有帮助。如果您需要更多,我可以在下面添加另一个答案来更全面地向您展示:)在一部电影中使用100个背景解决了这个问题,我的背景是糟糕的矢量图形,所以它不需要那么多内存:)我如何将它们装入和移出内存:p?也可以从swf中执行此操作吗?您需要将每个背景放在一个单独的swf中,可能命名为background0.swf。。背景。然后您可以使用加载器加载SWF。将加载程序放在stage上,然后是Loader.load(newurlrequest(“backround”+i+“.swf”);。如果要交换背景,请在其后面添加另一个加载程序,使用loader.contentLoaderInfo.addEventListener(Event.COMPLETE,onBackgroundSwap)侦听Event.COMPLETE事件,然后在onBackgroundSwap中删除以前的背景。希望这有帮助。如果您需要更多,我可以在下面添加另一个答案,以便更全面地向您展示:)在一部电影中使用100个背景解决了这个问题,我的背景是糟糕的矢量图形,所以不需要太多内存:)