0

我在从 adobe air 应用程序创建 swf 文件运行时时遇到问题。例如,我使用https://github.com/jamesflorentino/Flip-Planes-AS3创建动画,我已将 Sprite 扩展转换为 MovieClip,动画运行得非常好。现在我想让动画可以被用户保存为 swf 文件。

我用这样的脚本尝试了 as3swf:

private function createSwf():void{
    //let make example the Main class is taken from github above
    var _main:Main = new Main();
    // in this case i use AS3SWF plugin
    var _swf:SWF = new SWF(_main.loaderInfo.bytes);
    // this is for copy byteArray from the _swf convertor
    var buffer:ByteArray = new ByteArray();
    _swf.publish(buffer);        
    saveToDesktop(buffer);
}

private function saveToDesktop(_ba:ByteArray):void{
  // create the file on the desktop
  var myFile:File = File.desktopDirectory.resolvePath("demo.swf");
  // create a FileStream to write the file
  var fs:FileStream = new FileStream();
  // add a listener so you know when its finished saving
  fs.addEventListener(Event.CLOSE, fileWritten);
  // open the file
  fs.openAsync(myFile, FileMode.WRITE);   
  // write the bytearray to it
  fs.writeBytes(_ba);
  // close the file
  fs.close();
}

private function fileWritten(e:Event):void{
  trace("new swf file is created");
}

在所有这些过程之后,我在桌面文件夹中生成了名为 demo.swf 的 swf,但是当我打开文件时,它只是一个带有错误消息的白色背景:

VerifyError: Error #1014: Class flash.events::NativeWindowBoundsEvent could not be found.
at flash.display::MovieClip/nextFrame()
at mx.managers::SystemManager/deferredNextFrame()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:278]
at mx.managers::SystemManager/preloader_preloaderDocFrameReadyHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\SystemManager.as:2627]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.preloaders::Preloader/timerHandler()[E:\dev\4.y\frameworks\projects\framework\src\mx\preloaders\Preloader.as:515]
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

请帮助我从脚本端或命令行端创建 swf 文件运行时的最佳方法是什么,只要不是服务器端,因为它是桌面应用程序。

非常感谢

4

1 回答 1

0

在运行时创建 SWF 与获取动画的内存字节数组表示并使用 SWF 扩展名保存它不同。

如果您想从 AIR 构建 SWF;您可以考虑将 Flex Framework 与您的应用程序捆绑在一起,并使用NativeProcess来触发 mxmlc 以生成 SWF。您需要源代码 [或 SWC] 来执行此操作,但它不适用于您正在运行的应用程序中已编译的资产/类。

或者,您可能想要查看SWF 的文件格式并从 AIR 应用程序手动创建它。我毫不怀疑这是可能的,但我不认为这是微不足道的。

于 2012-09-11T16:59:00.410 回答