从swf动态嵌入符号?

时间:2010-02-22 20:33:38

标签: 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 : Class;

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

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

相反,我想使用这样的2个循环:

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
    }
}

这不会起作用,因为它告诉我元数据是错误的,所以我的问题是:

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

2 个答案:

答案 0 :(得分:3)

呀,真难马库斯,有没有做你想要什么样的方式。 MetaData不是AS3,它没有被评估,所以你不能按照你尝试的方式使用它。

但是,如果您要嵌入100个背景符号,为什么不在时间轴中的每个帧上创建一个MovieClip呢?然后嵌入该符号一次并使用gotoAndStop转到你想要的那个?

100张背景在开始时全部加载到内存中听起来像是一种狡猾的方式来回到我身边。更好的方法可能是在需要时加载内存和内存。这取决于它们当然用于什么,但“背景”这个名称告诉我,这可能是更好的行动方案。

答案 1 :(得分:1)

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

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