as3 - 从 Assets 类中获取库符号

Posted

技术标签:

【中文标题】as3 - 从 Assets 类中获取库符号【英文标题】:as3 - getting library symbols from an Assets class 【发布时间】:2010-11-30 21:21:56 【问题描述】:

我创建了一个 assets.swf,我想在其中保留我的所有符号。然后,我创建了一个进行嵌入的 Assets 类。它看起来像这样:

public class Assets extends MovieClip
    
        [Embed(source="assets.swf", symbol="MyBox")]
        public static var MyBox:Class;

        public function Assets() 
        

        

    

现在,在其他类中,我想创建一个新框:

import com.company.Assets;
...
public function Game() 


    var myBox:MovieClip = new Assets.MyBox();
    addChild(myBox);


我知道这不正确,我得到“TypeError:错误 #1007:在非构造函数上尝试实例化。”如何访问 Assets 类中的资产?

【问题讨论】:

您确定 symbol="MyBox" 是正确的符号名称吗?因为您似乎按照bit-101.com/blog/?p=853 所做的正确 我也有同样的问题。 您使用的是 Flash 还是 FlashDeveloper?我开始怀疑这是 FlashDeveloper 功能(不是 AS3 功能) 【参考方案1】:

编辑:我想你会找到答案here。

以下内容适用于使用加载有 Loader 类的 SWF 中的类。

private function onLoad(e:Event):void

 var domain:ApplicationDomain = LoaderInfo(e.target).applicationDomain;
 var Type:Class = domain.getDefinition("pack.MyComponent") as Class;
 var myBox:MovieClip = new Type();
 addChild(myBox);

【讨论】:

【参考方案2】:

实现它的另一个好方法是简单地编译 SWC 并像另一个类一样导入它。

在您的 SWC 中为 AS 导出的每个符号都将在同一范围内可供您使用。

这样可以节省大量代码编写,并将资源直接嵌入到 SWF 中,避免使用多个加载器。

【讨论】:

【参考方案3】:

如果您仍然想要 .swf 路由,您可以:

public class Assets extends MovieClip
    
        [Embed(source="assets.swf", symbol="MyBox")]
        private static var _MyBox:Class;
        public static function get NewBox():MovieClip 
            return new _MyBox();
        
    
...

import com.company.Assets;
...
public function Game() 


    var myBox:MovieClip = Assets.NewBox;
    addChild(myBox);


另一种方法是导出您希望动作脚本使用的符号并改用 .swc。您可以在 flash 文件中设置具有完整命名空间的类,因此对于 MyBox,您可以将其设为 com.company.Assets.MyBox,其用法与您的预期相似:

import com.company.Assets.*;
...
public function Game() 


    var myBox:MovieClip = new MyBox();
    addChild(myBox);


【讨论】:

【参考方案4】:

您可以在 Asset 类中创建新对象..(这也使您可以创建可重用资产池)

类似:

public class Assets extends MovieClip

    [Embed(source="assets.swf", symbol="MyBox")]
    private static var MyBox:Class;

    public static function getNewBox():DisplayObject 
        return new MyBox();
    

    public function Assets() 
    

    

【讨论】:

以上是关于as3 - 从 Assets 类中获取库符号的主要内容,如果未能解决你的问题,请参考以下文章

如何从 automake/libtool 库中获取符号列表?

ActionScript 3 AS3 RegExp:验证出生日期(英/美符号)

当 iOS 应用程序链接到静态库时,如何获取丢弃的符号列表?

如何在 Flash AS3 中通过鼠标单击暂停多个符号

如何在公共图标类中一起管理自定义导入图标和 sf 符号的大小调整?

归档时应用程序获取“架构 armv7 的未定义符号”,除非我不剥离库中的链接产品