「Masapi」とは、Flex/Flash/AIRで大量ファイルをロードする用のオープンソースのAS3フレームワークです。URLLoaderやLoaderというクラスと同じインタフェースを持っています。

※URLLoader クラスは、指定した URL からテキスト、バイナリデータ、または URL エンコード形式の変数をダウンロードする際に使用します。動的なデータ駆動アプリケーションで使用するテキストファイル、XML、その他の情報をダウンロードする場合に便利です。

URLLoader オブジェクトは、データを ActionScript で使用できるようにする前に、それらのすべてのデータを URL からダウンロードします。URLLoader オブジェクトは、ダウンロードの進捗に関する通知を送信します。これらは、送出済みのイベント、さらには bytesLoaded および bytesTotal プロパティで監視できます。

「Masapi」は以下の特徴を持っています。

・Same interface for all load managers (URLLoader, Loader, …)
・Easy massive loading classes
・Advanced massive loading (priority, dependencies)
・Advanced massive loading management (loading policy, loading information, …)

[使用方法]

1)、次のURLから最新版をダウンロードします。

http://code.google.com/p/masapi/downloads/list

2)、プロジェクトに追加する

プロジェクトに追加するため、クラスパスに「ch」というフォルダが必要です。「chフォルダをFLAと同じフォルダに置く」と「srcフォルダをクラスパスに追加する(File > Publish settings > Flash > ActionScript 3 settings)」ってのいずれかもできます。

クラスパスに追加した上で、以下の様のソースで使えるかどうか確認します。

  1. import ch.capi.net.*;
  2. import ch.capi.events.*;
  3.  
  4. var ml:MassLoader = new MassLoader();
  5. ml.addEventListener(MassLoadEvent.FILE_OPEN, onFileOpen);
  6.  
  7. function onFileOpen(evt:MassLoadEvent):void { trace(open); }

正常で動作するとMasapiのインストールは完了します。

以下は「CompositeMassLoader」というクラスを利用してリスト中の何個ファイルをロードする例です。

  1. import ch.capi.net.*;
  2.  
  3. //creates the MassLoader
  4. var cml:CompositeMassLoader = new CompositeMassLoader();
  5.  
  6. //creates & add the files to the MassLoader
  7. cml.addFile(myFile.txt); // will use a URLLoader object with the URLLoaderDataFormat.VARIABLES property
  8. cml.addFile(myFile.xml); // will use a URLLoader object with the URLLoaderDataFormat.TEXT property
  9. cml.addFile(myFile.css); // will use a URLLoader object with the URLLoaderDataFormat.TEXT property
  10. cml.addFile(myFile.png); // will use a URLLoader object with the URLLoaderDataFormat.BINARY property
  11. cml.addFile(myFile.png”, LoadableFileType.SWF); // will use a Loader object
  12. cml.addFile(myFile.jpg); // will use a URLLoader object with the URLLoaderDataFormat.BINARY property
  13. cml.addFile(myFile.swf); // will use a Loader object
  14. cml.addFile(myFile.swf”, LoadableFileType.BINARY); // will use a URLLoader object with the URLLoaderDataFormat.BINARY property
  15.  
  16. //starts the loading
  17. cml.start();
  18.  
  19. //useful information for debugging
  20. //trace(cml.massLoader);

次は「Masapi」のローディングイベントを監視する例:

  1. import ch.capi.net.*;
  2. import ch.capi.events.*;
  3.  
  4. //creates the MassLoader
  5. var cml:CompositeMassLoader = new CompositeMassLoader();
  6.  
  7. cml.massLoader.addEventListener(ProgressEvent.PROGRESS, onOverallProgress); //overall progression
  8. cml.massLoader.addEventListener(MassLoadEvent.FILE_OPEN, onOpenHandler); //a file download starts
  9. cml.massLoader.addEventListener(Event.COMPLETE, completeHandler); //massload complete
  10.  
  11. //… (creates the files and so on)
  12.  
  13. //listen to the overall progression
  14. function onOverallProgress(evt:ProgressEvent):void
  15. {
  16.     var percent:Number = Math.round(evt.bytesLoaded / evt.bytesTotal * 100);
  17.     trace(”Loaded at “+percent+”%”);
  18. }
  19.  
  20. //listen when a file begins to be loaded
  21. function onOpenHandler(evt:MassLoadEvent):void
  22. {
  23.         var file:ILoadableFile = evt.file as ILoadableFile;
  24.         file.addEventListener(ProgressEvent.PROGRESS, onFileProgress);
  25. }
  26.  
  27. //listen to a specific file
  28. function onFileProgress(evt:ProgressEvent):void
  29. {
  30.         trace(”file progress”);
  31. }
  32.  
  33. //listen to the complete event
  34. function completeHandler(evt:Event):void
  35. {
  36.     trace(”MassLoad complete”);
  37. }
  38.  
  39. //starts the loading
  40. cml.start();

大量のファイルがあるので、ローディングのステータスの取得が必要となります。以下はステータスを取得する例:

  1. import ch.capi.net.*;
  2. import ch.capi.events.*;
  3.  
  4. //creates the MassLoader
  5. var cml:CompositeMassLoader = new CompositeMassLoader();
  6. cml.massLoader.addEventListener(ProgressEvent.PROGRESS, onProgress);
  7. //…
  8.  
  9. function onProgress(evt:ProgressEvent):void
  10. {
  11.         var info:ILoadInfo = evt.target.loadInfo;
  12.         //var info:ILoadInfo = cml.loadInfo;
  13.         trace(info.currentSpeed);
  14.         trace(info.averageSpeed);
  15.         trace(info.elapsedTime);
  16.         trace(info.remainingTime);
  17.         trace(info.percentLoaded);
  18.         trace(info.ratioLoaded);
  19.         trace(info.bytesLoaded+” / “+info.bytesTotal);
  20. }

[関連リンク]

http://code.google.com/p/masapi/ 公式サイト

メインコンテンツEND ■
1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Posted on Saturday, 16th May 2009 by admin

Tags: , ,
Posted in AIR, ActionScript, Flash Project | Comments (0) | 1,942 views

Leave a Reply