基于XML元素的Flash AS3附加SWC符号
我有一个SWC,它包含8个精灵,每个精灵都有一个带有模式Icon01、Icon02等的链接标识符。我可以通过执行以下操作来创建其中一个精灵的实例基于XML元素的Flash AS3附加SWC符号,xml,flash,actionscript-3,swc,Xml,Flash,Actionscript 3,Swc,我有一个SWC,它包含8个精灵,每个精灵都有一个带有模式Icon01、Icon02等的链接标识符。我可以通过执行以下操作来创建其中一个精灵的实例 var i:Icon01 = new Icon01(); this.addChild(i); 但是,我有一个包含不同消息的XML文件,每条消息都包含一个以相同方式标记的图像元素 ... <message> <image>Icon01</image> </message> ... 但我不知道如何
var i:Icon01 = new Icon01();
this.addChild(i);
但是,我有一个包含不同消息的XML文件,每条消息都包含一个以相同方式标记的图像元素
...
<message>
<image>Icon01</image>
</message>
...
但我不知道如何把它塑造成一个精灵,并把它添加到舞台上。我试过了
var s:Sprite = msgObj.image as Sprite;
this.addChild(s);
我刚刚得到一个关于空对象的错误。感谢您的帮助。如果资产已准备好/加载,请查看或加载信息
e、 g
HTH如果资产已准备好/加载,请查看或加载信息
e、 g
HTHgetDefinitionByName(msgObj.image)
将是一个不错的选择,但是您需要引用您可能在某处调用的每个类,否则它将无法编译
在本例中,我要做的是创建一个从未被调用的伪函数,并列出所有的类,这样就可以强制编译器包含它
另一种选择是使用[embed]
功能而不是使用swc加载这些文件,这样可以保证它们被编译并可以随时调用。getDefinitionByName(msgObj.image)
将是一种方法,但是您需要引用您可能在某处调用的每个类,否则它将无法编译
在本例中,我要做的是创建一个从未被调用的伪函数,并列出所有的类,这样就可以强制编译器包含它
另一个选项是使用[embed]
功能而不是使用swc加载这些文件,这样可以保证它们已编译并且可以随时调用。在FlashDevelop 4.0.1(不确定旧版本)中,右键单击.swf文件。“添加到库”选项的右下方是“选项”。选择“包含的库(完全包含)”,而不是“库(包含引用的类)”
在第一个选项中,当直接调用类时,比如newbackgroundimage()代码>引用该类,以便将其包括在内。当调用类时,使用var backgroundImage:class=getDefinitionByName(“backgroundImage”)作为类代码>它不是直接引用的,因此不包括在内
通过选择第二个选项,.swc中的所有类都会被包含,然后getDefinitionByName()
就可以工作了。在FlashDevelop 4.0.1(不确定旧版本)中,右键单击.swf文件。“添加到库”选项的右下方是“选项”。选择“包含的库(完全包含)”,而不是“库(包含引用的类)”
在第一个选项中,当直接调用类时,比如newbackgroundimage()代码>引用该类,以便将其包括在内。当调用类时,使用var backgroundImage:class=getDefinitionByName(“backgroundImage”)作为类代码>它不是直接引用的,因此不包括在内
通过选择第二个选项,.swc中的所有类都将被包含,然后getDefinitionByName()
就可以工作了。感谢您的建议。这使我更接近我想要的,但是,在它正常工作之前,我必须为每种类型的图像定义一个变量(例如var I:Image01)。是否可以按照上面概述的方式附加资产,而不必首先声明变量类型?@Matt当您使用getDefinitionByType时,您会得到一个可以实例化的类的引用。我不知道“不必先声明变量类型”是什么意思。您添加到显示列表中的所有内容都是DisplayObject(例如MovieClip、位图等)。感谢您的建议。这使我更接近我想要的,但是,在它正常工作之前,我必须为每种类型的图像定义一个变量(例如var I:Image01)。是否可以按照上面概述的方式附加资产,而不必首先声明变量类型?@Matt当您使用getDefinitionByType时,您会得到一个可以实例化的类的引用。我不知道“不必先声明变量类型”是什么意思。添加到显示列表中的所有内容都是DisplayObject(例如MovieClip、位图等)
var s:Sprite = msgObj.image as Sprite;
this.addChild(s);
import flash.utils.getDefinitionByName;
var Image:Class = getDefinitionByName(msgObj.image) as Class;
this.addChild(new Image());