我在从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文件运行时的最佳方法,无论是从脚本端还是命令行端,只要不是服务器端,因为它是桌面应用程序。
非常感谢
答案 0 :(得分:0)
在运行时创建SWF与获取动画的内存字节数组表示并使用SWF扩展保存它不同。
如果要从AIR构建SWF;您可以考虑将Flex Framework与您的应用程序捆绑在一起,并使用NativeProcess来触发mxmlc来生成SWF。您需要源代码[或SWC]来执行此操作,但它不适用于正在运行的应用程序中已编译的资产/类。
或者您可能想要查看the file format for a SWF,然后从AIR应用程序手动创建它。我毫不怀疑这是可能的,但我不认为这是微不足道的。