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 に答える