Swiffyの外部読み込みについて

このエントリーをはてなブックマークに追加

Swiffy 5.1から外部読み込みが可能となりました。
SWF(Swiffy変換JSON)やXML、jpg等の画像ファイルに対応しています。

■サポートされたload系関数(AS2)
loadMovie, loadMovieNum, loadVariables, loadVariablesNum, unloadMovie, unloadMovieNum, LoadVars, MovieClipLoader, XML,XMLNode

■サポートされたload系関数(AS3)
Loader, LoaderInfo,URLLoader,URLVariables.

Release Notes – Google Swiffy

これまでSwiffy上で動的に画像を表示させたい場合、
画像をbase64変換し、サーバー上でJSONファイルを編集しなければなりませんでした。

しかしSwiffy5.1からは直接ファイルを読み込み/表示できるのでサーバー側のアプリケーションを用意する必要がなくなりました。

またSWF(JSON)の読み込みにも対応していますので、大きくなりがちなSwiffyファイルをコンテンツ毎に分割し、ユーザーにストレス無くコンテンツを提供する、といったことが可能になります。

以下,この記事を執筆時点での最新バージョンである Swiffy 5.2 で動作の検証結果です。

読み込めるファイル形式

swf,jpg,jpeg,gif,png,bmp,xml,txt
※videoやサウンドの外部読み込みには対応していません。

ファイルを読み込む

以下は画像の読み込みの場合です。
他のファイル形式の場合もFlashと全く同じコードで動きます。

//AS2
_root.loadMovieNum("img.jpg",0);
 
var loader = new MovieClipLoader ();
loader.loadClip("http://gjmjg.jp/temp/box.swf" , 1);
 
//AS3
var myLoader:Loader = new Loader();
var url:URLRequest = new URLRequest("img.jpg");
myLoader.load(url);
stage.addChild(myLoader);

SWFを読み込み場合の注意点

SWFを読み込む場合、いくつか注意点があります。

・JSONファイルを用意する

読み込みまれるSWFを予めSwiffy変換し、swfと同階層に別途jsonファイルを用意します。
JSONファイル名はSWFのファイル名+”.swf.json”にします。

例)”ABC.swf”ファイルなら”ABC.swf.json”しておきます。
img1_3

・JSONファイルの中身

読み込まれるSWFをSwiffy変換し、ソースを表示してJSON部分のみをファイルにペーストします。

JSONはSwiffy変換後のHTMLになかにある「swiffyobject=」の後ろの「{」から最後の「}」までです。

余計なものが入っているとエラーになるので注意が必要です。自分の場合は思わず最後に「;(コロン)」を付けてしまい、動かなくて困りました。
img2

・ASでの記述

ASでは読み込み先を普通に「ファイル名.swf」と書いておきます。「.swf.json」を指定する必要はありません。
Swiffyから読み込みを行う際に、自動で「.swf.json」ファイルを読みにいってくれます。

読み込み時の処理について

読み込み開始と読み込み完了のイベントはサポートされていますが、
読み込み時のプロパティ(bytesLoaded,bytesTotalなど)に固定の値が入り、正しい値は取得できません。

AS2

loadMovie,loadMovieNum,loadVariables, loadVariablesNum
_totalFrames 未サポート(値が固定になる)
_farmesLoaded 未サポート(値が固定になる)
getBytesLoaded() 未サポート(値が固定になる)
getBytesLoaded() 未サポート(値が固定になる)
LoadVars
onLoad サポート
XML
onLoad サポート
status 未サポート
MovieClipLoader
onLoadStart サポート
onLoadProgress 未サポート(イベント自体は取得可能)
bytesLoaded,bytesTotalの値が固定になる
onLoadComplete サポート
onLoadInit サポート
onLoadError サポート

AS3

Loader,LoaderInfo,URLLoaderイベント
Event.OPEN サポート
Swiffy変換時に非対応と表示されますがサポートされている様子です
ProgressEvent.PROGRESS 未サポート(イベント自体は取得可能)
bytesLoaded,bytesTotalの値が固定になる
Event.INIT サポート
Swiffy変換時に非対応と表示されますがサポートされている様子です
Event.COMPLETE サポート
IOErrorEvent.IO_ERROR 未サポート
LoaderInfoプロパティ
loaderURL 未サポート
contentLoaderInfo 未サポート
actionScriptVersion 未サポート
swfVersion 未サポート

Leave a Reply