Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.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
Flash AS3从外部swf库加载符号_Flash_Actionscript 3 - Fatal编程技术网

Flash AS3从外部swf库加载符号

Flash AS3从外部swf库加载符号,flash,actionscript-3,Flash,Actionscript 3,我有两个SWF,其中一个(我们称之为Resources.SWF),在它的库中包含几个符号(大多数是MovieClips),但是,没有一个符号被添加到舞台中(时间轴只包含一个空帧), 然后是另一个swf(Main.swf),我需要从另一个swf导入一些符号 我一直在四处寻找,但我看到的所有信息和尝试的信息都使用以下方式从舞台/时间轴导入符号: loadedMC = MovieClip(loader.content); 或 我的符号有一个类定义,因为它们也以这种方式在其他swf中使用: [Embe

我有两个SWF,其中一个(我们称之为
Resources.SWF
),在它的库中包含几个符号(大多数是MovieClips),但是,没有一个符号被添加到舞台中(时间轴只包含一个空帧), 然后是另一个swf(
Main.swf
),我需要从另一个swf导入一些符号

我一直在四处寻找,但我看到的所有信息和尝试的信息都使用以下方式从舞台/时间轴导入符号:

loadedMC = MovieClip(loader.content);

我的符号有一个类定义,因为它们也以这种方式在其他swf中使用:

[Embed(source='assets/Resources.swf', symbol='SymbolName')]
public class Generic2 extends MovieClip
有没有办法做到这一点


如果没有,我是否需要修改Resources.swf来解决这个问题,或者我是否有其他选择?

加载Resources.swf后,您可以创建加载类的实例

下面是一个可能有帮助的片段:

var dynClass : Class = Class(getDefinitionByName("fully.qualified.ClassName"));
if(dynClass) 
{
    var app : Object = new dynClass();
    addChild(app as DisplayObject);
}

加载Resources.swf后,可以创建已加载类的实例

下面是一个可能有帮助的片段:

var dynClass : Class = Class(getDefinitionByName("fully.qualified.ClassName"));
if(dynClass) 
{
    var app : Object = new dynClass();
    addChild(app as DisplayObject);
}

您需要有一个as3类,或者只导出框架中的符号,否则无法引用它。如果不导出movieclip,您的swf将为空。。。基本上,您可以将其导出为某个类,然后引用空类

您需要有一个as3类,或者只导出框架中的符号,否则无法引用它。如果不导出movieclip,您的swf将为空。。。基本上,您可以将其导出为某个类,然后引用空类

遵循以下步骤

  • 在flash中,通过调出库项的“属性”并选中“export for ActionScript”并给它一个“class”名称来标记要导出的类
  • 发布资源.SWF
  • 加载Resources.SWF后,您可以使用此helper函数创建实例
  • 然后,您可以添加child()或任何您想要的实例
  • 辅助函数

    public function createInstance(mc:MovieClip, className:String, instName:String):MovieClip
    {
        var cls:Class = mc.loaderInfo.applicationDomain.getDefinition(className) as Class;
        if (cls)
        {
            var instMC:MovieClip = new cls();
            instMC.name = instName;
            return instMC;
        }
        return null;
    }
    
    遵循以下步骤

  • 在flash中,通过调出库项的“属性”并选中“export for ActionScript”并给它一个“class”名称来标记要导出的类
  • 发布资源.SWF
  • 加载Resources.SWF后,您可以使用此helper函数创建实例
  • 然后,您可以添加child()或任何您想要的实例
  • 辅助函数

    public function createInstance(mc:MovieClip, className:String, instName:String):MovieClip
    {
        var cls:Class = mc.loaderInfo.applicationDomain.getDefinition(className) as Class;
        if (cls)
        {
            var instMC:MovieClip = new cls();
            instMC.name = instName;
            return instMC;
        }
        return null;
    }
    

    如果没有与此对象相关联的as3类,此操作是否有效?如果我的类名只是MyClassName,那将是它的完全限定名?不,库对象上必须有一个类定义(您写道:“我的符号有一个类定义”)。是的,如果不使用名称空间,类名就足够了。如果没有与此对象关联的as3类,这是否有效?如果我的类名只是MyClassName,那将是它的完全限定名?不,库对象上必须有一个类定义(您写道:“我的符号有一个类定义”)。是的,如果不使用名称空间,那么类名就足够了。