2012-03-24 15 views

答えて

6

....私はアンドロイドのためのフラッシュAIRアプリケーションを作って、私は、ファイルをダウンロードし、アプリケーションのローカルディレクトリに事前に

感謝を保存する必要があります、FileStreamをは(あなたは彼らがそれを保存する場所を選択する場合のFileReferenceを)あなたのようにローカルに保存することができます

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         creationComplete="windowedapplication1_creationCompleteHandler(event)"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 

      protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void 
      { 
       // TODO Auto-generated method stub 
       var urlLoader:URLLoader = new URLLoader(); 
       urlLoader.addEventListener(Event.COMPLETE, complete_handler); 
       urlLoader.dataFormat = URLLoaderDataFormat.BINARY; 
       urlLoader.load(new URLRequest("http://www.shaunhusain.com/CheckboxList/CheckboxList.swf")); 

      } 

      private function complete_handler(event:Event):void 
      { 
       var data:ByteArray = event.target.data; 

       var fr:FileReference = new FileReference(); 
       fr.save(data, 'test.swf'); 

       var fileStream:FileStream = new FileStream(); 
       trace(File.applicationDirectory.nativePath); 
       fileStream.open(new File(File.applicationDirectory.nativePath+"\\test.swf"),FileMode.WRITE); 
       fileStream.writeBytes(data, 0, data.length); 
      } 
     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 
</s:WindowedApplication> 

EDIT中: AS3モバイルプロジェクトのバージョン:

package 
{ 
    import flash.display.Sprite; 
    import flash.display.StageAlign; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.filesystem.File; 
    import flash.filesystem.FileMode; 
    import flash.filesystem.FileStream; 
    import flash.net.FileReference; 
    import flash.net.URLLoader; 
    import flash.net.URLLoaderDataFormat; 
    import flash.net.URLRequest; 
    import flash.utils.ByteArray; 

    public class DownloadFileMobileAS3 extends Sprite 
    { 
     public function DownloadFileMobileAS3() 
     { 
      super(); 

      // support autoOrients 
      stage.align = StageAlign.TOP_LEFT; 
      stage.scaleMode = StageScaleMode.NO_SCALE; 
      createLoader(); 
     } 
     protected function createLoader():void 
     { 
      // TODO Auto-generated method stub 
      var urlLoader:URLLoader = new URLLoader(); 
      urlLoader.addEventListener(Event.COMPLETE, complete_handler); 
      urlLoader.dataFormat = URLLoaderDataFormat.BINARY; 
      urlLoader.load(new URLRequest("http://www.shaunhusain.com/CheckboxList/CheckboxList.swf")); 

     } 

     private function complete_handler(event:Event):void 
     { 
      var data:ByteArray = event.target.data; 

      var fr:FileReference = new FileReference(); 
      fr.save(data, 'test.swf'); 

      var fileStream:FileStream = new FileStream(); 
      trace("something"); 
      trace(File.applicationDirectory); 
      trace(File.applicationDirectory.nativePath); 
      trace(File.applicationStorageDirectory.nativePath); 
      fileStream.open(new File(File.applicationStorageDirectory.nativePath+"\\test.swf"),FileMode.WRITE); 
      fileStream.writeBytes(data, 0, data.length); 
     } 
    } 
} 

上記のコードに2つのオプションを追加しました。ファイル参照部分を取り出すか、ファイルストリーム部分を取り出すことをお勧めします。そうでなければ、2回保存されます。

モバイルセクションを追加したばかりですが、実際にはAndroidのファイルを保存するためのダイアログが表示されますが、これまでに一度も見たことのないダイアログが表示されますそれをオーディオファイル、画像ファイル、ビデオファイルをオプションまたはデフォルト位置として/mnt/sdcard/test.swfに保存します。私はそこに保存して、ES Explorerを使って見ることができました(ただし、データが実際には正しいと思われることを確認する良い方法はありませんでした)。 applicationDirectoryを使用していたものが私の上で失敗していました。それをトレースして、nativePathが表示されていないので、値を持っていたapplicationStorageDirectoryに切り替えました。私の電話が根っこをしている私は完全にファイルを確認する方法が実際にはあるがエラーはありません。あなたがこれを試しても、あなたがまだ遭遇している特定の問題があれば教えてください。

+1

私はフラッシュのためにこのコードを使用していますが、私はフラッシュのためにスーツを作るためにすべてをしていたが、働いていませんでした助けてくれてありがとう。あなたはこのコードをフラッシュのために合うようにする方法を知っている.. –

+0

ちょっとパボ、アプリケーションをコンテナとして使用し、作成完了イベントを使用しています。これはFlexの何かに本当に依存しているとは思えませんが、Flashで利用できるはずです...私はフラッシュモバイルプロジェクトを作成して投げます私が何か問題を抱えているかどうかを調べるために、問題があるかもしれないと思う唯一のことは、モバイルプラットフォーム上でどのように動作するのかわからないからです。保存するファイルや場所を選択していますが、AndroidやiOSで認識されている内蔵のファイルシステムブラウザはありません。 – shaunhusain

+0

答えを更新しました。また、プロジェクトを作成するときに外部ストレージへの書き込みを許可することを確認したので、それを-app.xmlファイルに追加し、最終的にデバイスにインストールされたapkに追加しました。 – shaunhusain

関連する問題