冰雹,堆叠!
我在如何直接在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中扩展或使用其他类。
如果我设置了库路径,那么这就成为可能......
答案 0 :(得分:3)
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语句中的源路径。
希望这对你有用!弗兰克
答案 1 :(得分:0)
为什么你说“这条线路不起作用,当然......”?你几乎是对的,只是缺少一些东西。
[Embed(source="SWFWireDecompiler.swc", mimeType="application/octet-stream")]
public var SWC:Class;
然后你可以把数据作为ByteArray来获取:
var data:ByteArray = new SWC();