Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/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 如何保留运行时加载的Flash组件的类型_Actionscript 3_Flash - Fatal编程技术网

Actionscript 3 如何保留运行时加载的Flash组件的类型

Actionscript 3 如何保留运行时加载的Flash组件的类型,actionscript-3,flash,Actionscript 3,Flash,我有一个用Flash Pro 5.5制作的swf,舞台上有几部儿童电影。在其中一个子项上,我使用“组件定义”对话框试图使该子项成为如下所示的SmartAsset类的实例。然后在运行时使用BulkLoader将发布的父swf加载到主应用程序中。资产将很好地加载,但所讨论的子项不是SmartAsset类型,而是一个普通的MovieClip。奇怪的是,它添加了两个动态属性:来自SmartAsset类的type,具有我在FlashPro中设置的正确值和无用的ComponentInspector设置。如何

我有一个用Flash Pro 5.5制作的swf,舞台上有几部儿童电影。在其中一个子项上,我使用“组件定义”对话框试图使该子项成为如下所示的SmartAsset类的实例。然后在运行时使用BulkLoader将发布的父swf加载到主应用程序中。资产将很好地加载,但所讨论的子项不是SmartAsset类型,而是一个普通的MovieClip。奇怪的是,它添加了两个动态属性:来自SmartAsset类的type,具有我在FlashPro中设置的正确值和无用的ComponentInspector设置。如何让Flash将此子项的类型保留为SmartAsset

目标是让设计师能够使用Flash Pro中的图形组件UI为资产子级分配自定义属性。主应用程序可以根据这些属性以不同的方式处理这些子级。我可以满足于使用引入的动态属性,但如果知道我可以增强SmartAsset,Flash将保留所有功能,我会感觉更好,因为该子项是SmartAsset的实际实例

package  {
    import flash.display.MovieClip;

    public class SmartAsset extends MovieClip {

        private var _type:String;

        [Inspectable(name="type", variable="type", enumeration="phys_circle,phys_square,phys_polygon,placeholder,proxy,subpart", defaultValue="subpart")]
        public function get type():String {return _type;}
        public function set type(value:String):void {_type = value;}
    }
}
我尝试过但没有成功的事情:

LoaderContext为空或一个具有ApplicationDomain.currentDomain 将SmartAsset导入主应用程序并使用 在上面注册ClassAlias。
您可以将共享类放在两者都使用的libraryswc中,以便它们具有相同的SmartAsset定义。。。或使用ApplicationDomain.currentDomain加载。。这会将SmartAsset的定义放入域中,以便您可以访问它。然后使用var SmartAsset:Class=getDefinitionByNamepath.to.SmartAsset作为类;var资产:SmartAsset=myLoadedClip作为SmartAsset;traceaset.type;因为它是一种智能资产。。。但是你还没有访问主应用程序中的类。a不太可取,因为所有资产都捆绑在一起,这使得更新更麻烦。b不起作用,您使用变量名SmartAsset并尝试将其用作类型。按照这一思路,我尝试将两个swf链接到SmartAsset的同一个外部swc,但主应用程序仍然知道我正在使用的孩子的正确类型。b将会并且确实起作用。如果您注意到了,我将变量键入了一个类型类,这样您就可以说var任何东西:SmartAsset=newsmartasset。。。或者就像我给你看的那样。试试看。。你会发现它确实有效。嗯,它失败有两个原因。正如您编写的那样,变量SmartAsset被用作var资产的类型。除非定义资产:*,否则不会在Flash Builder中编译。尽管如此,我还是感到惊讶的是,当时的演员阵容还不错。好的,我这样做并保留了强制转换,但是它抛出了运行时错误:ReferenceError:error 1065:未定义变量SmartAsset。表示getDefinitionByName失败。其目的是让类定义与加载的swf一起出现,对吗?耶!好啊这意味着在你的flash项目中,SmartAsset类没有被分配到剪辑中。。。