Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.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
基于XML元素的Flash AS3附加SWC符号_Xml_Flash_Actionscript 3_Swc - Fatal编程技术网

基于XML元素的Flash AS3附加SWC符号

基于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> ... 但我不知道如何

我有一个SWC,它包含8个精灵,每个精灵都有一个带有模式Icon01、Icon02等的链接标识符。我可以通过执行以下操作来创建其中一个精灵的实例

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

HTH

getDefinitionByName(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());