在ActionScript中编译时嵌入/导入SWC,无需设置库路径

冰雹,堆叠! 我在查找如何直接在ActionScript中导入SWC文件时遇到了一些麻烦,而没有设置文件的库路径。 举个例子,我需要这样的东西:
package
{
    [Embed(source = 'Library.swc')] // This line won't work, of course...

    import ClassInsideSWC;

    public class MyClass extends ClassInsideSWC
    {
        public function MyClass()
        {
            super();
        }
    }
}
此外,我不想(事实上我不能)通过加载
Loader
类来导入SWC。 那么,有人知道只使用ActionScript代码链接到SWC的方法吗? 编辑 只是为了添加关于这个问题的更多信息,我将展示我的场景以及更多细节...... 我有一个班级
SubClass
将独立于其他人。 它将扩展一个位于SWC / SWF内部的类
SuperClass
...... 这个SWC / SWF有整个框架。 我无法在单个SWF中编译每个类。 我的框架的每个部分都是SWF,并且将在运行时由Loader类下载。 可悲的是,@ frankhermes的回答是行不通的。 该方法不会下载类,也不允许我扩展或使用SWC中的其他类。 如果我设置库路径,这可能...     
已邀请:
关于Sean Fujiwara答案的可能修正:
[Embed(source="SWFWireDecompiler.swc", mimeType="application/octet-stream")]
public var SWC:Class;
可能需要:
[Embed(source="SWFWireDecompiler.swf", symbol="ClassInSWC")]
public class ClassInSWC
{
   ....
}
编辑:作为评论后的后续行动,这是获得可接受答案的另一种尝试:
package
{
    import flash.display.Sprite;

    public class SWCTest extends Sprite
    {
        public function SWCTest()
        {
            var extended:ExtendedCrumbs = new ExtendedCrumbs();
        }
    }

}

[Embed(source="../swfs/assets.swf", symbol="assets.Crumbs")]
class CrumbsInSWC
{

}

class ExtendedCrumbs extends CrumbsInSWC
{
    public function ExtendedCrumbs()
    {
        super();
    }

    // override something here
}
遗憾的是它只适用于swf文件,而不适用于swc,因为在使用swc时你不能在Embed语句中使用
symbol="..."
。但上面的代码确实编译。将swf文件放在项目的任何位置,并调整Embed语句中的源路径。 希望这仍然对你有用!坦率     
为什么这么说“这条线不会起作用,当然......”?你几乎是对的,只是缺少一些东西。
[Embed(source="SWFWireDecompiler.swc", mimeType="application/octet-stream")]
public var SWC:Class;
然后你可以把数据作为ByteArray来获取:
var data:ByteArray = new SWC();
    

要回复问题请先登录注册