2009-09-22 60 views
0

我有一些swf文件,我需要在我的haxe中使用(未来编译为swf)程序。 swfmill嵌入图片没有问题,所以我试图用swfmill反汇编swf,发现了一些类似DefineSprite和DefineShape的对象ID。通过ObjectID附加swf元素

是否有可能将haxe中的这些元素作为库使用swf文件?

回答

1

,如果他们有,您可以将一个元素(图片,声音等):

  1. SymbolClass出口为它(或者ExportAsset)产生
  2. AS3类存根(用于FLASH9 +至少) - HAXE将照顾这至少对资源的第一帧

对于haXe的,你必须支持 -swf-lib mylib.swf 开关,只需要一个SWF文件作为参数。如果你想使用多个库,你可以用swfmill或SamHaxe将它们组装成一个库,并支持组装的库。

从HAXE,你就可以使用

var mySprite: flash.display.Sprite = cast 
Type.createInstance(Type.resolveClass("the.exported.SpriteSymbolName"), []); 

var myBitmap: flash.display.Bitmap = cast 
Type.createInstance(Type.resolveClass("the.exported.BitmapSymbolName"), []); 

希望这有助于。

+0

有点帮助。没有回答我的问题,但至少我知道我不是唯一不能这样做的人(通过ObjectID链接)。 – stroncium 2009-10-12 21:47:51

+0

我想告诉你,如果给定的ID没有任何SymbolClass,那么你就不能实例化它。然而,如果你需要它,你可能会做一些破解: 使用format.swf haxelib解析SWF,向解析的结构添加SymbolClass标记,以及AS3类存根(使用format.abc组装)。你可以偷看SamHaxe的来源,看看它是如何做到这一点的。 – ron 2009-10-19 12:46:56

+0

当然,这可以在运行时即时完成,您可以加载和使用新组装的swf文件。 – ron 2009-10-19 12:48:17