Swiffyランタイムv3.7がサポートしている機能/サポートしてない機能

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

■Swiffy v3.7がサポートしている機能

Swiffyランタイム v3.7で大きくできる事が増えました。
実は3.6まではムービークリップの着色すらできませんでした。orz..

SwiffyはActionScript1か、ActionScript2で記述しますが、
ASの主なクラスは、ほぼ対応していると言えます。

以下のページで、サポートしている機能、ブラウザを確認するする事ができます。

Swiffy / Getting Started
http://www.google.com/doubleclick/studio/swiffy/gettingstarted.html

■Swiffy v3.7サポート状況

■Swiffy v3.7使用可能ActionScript

Global functions ASSetPropFlags,clearInterval,clearTimeout,escape,isFinite,isNaN,on,onClipEvent,
parseFloat,parseInt,setInterval,setTimeout,trace,unescape,updateAfterEvent
Global properties _global,_level0,_root
Array concat,join,length,pop,push,reverse,shift,slice,sort,splice,unshift
Color getRGB,getTransform,setRGB,setTransform
Date UTC,getDate,getDay,getFullYear,getHours,getMilliseconds,getMinutes,getMonth,
getSeconds,getTime,getTimezoneOffset,getUTCDate,getUTCDay,getUTCFullYear,
getUTCHours,getUTCMilliseconds,getUTCMinutes,getUTCMonth,getUTCSeconds,getYear,
setDate,setFullYear,setHours,setMilliseconds,setMinutes,setMonth,setSeconds,
setTime,setUTCDate,setUTCFullYear,setUTCHours,setUTCMilliseconds,setUTCMinutes,
setUTCMonth,setUTCSeconds,setYear
Key addListener,getAscii,getCode,isDown,isToggled,removeListener

Math

abs,acos,asin,atan,atan2,ceil,cos,exp,floor,log,max,min,pow,random,round,sin,sqrt,tan
Mouse addListener,hide,removeListener,show
MovieClip _alpha,_currentframe,_framesloaded(),_height,_name,_parent,_rotation,_target,
_totalframes,_visible,_width,_x,_xmouse,_xscale,_y,_ymouse,_yscale,attachMovie,
beginFill,clear,createEmptyMovieClip,curveTo,duplicateMovieClip,enabled,endFill,getBounds,
getBytesLoaded(),getBytesTotal(),getDepth,getInstanceAtDepth,getNextHighestDepth,
getRect,getURL,globalToLocal,gotoAndPlay,gotoAndStop,hitTest,lineStyle,lineTo,localToGlobal,
moveTo,nextFrame,onDragOut,onDragOver,onEnterFrame,onLoad,onPress,onRelease,
onReleaseOutside,onRollOut,onRollOver,play,prevFrame,removeMovieClip,stop,swapDepths
Number toString,valueOf
Object registerClass,unwatch,watch
Stage addListener,removeListener,height,width

String

charAt,charCodeAt,concat,fromCharCode,indexOf,lastIndexOf,length,slice,split,
sub,str,substring,toLowerCase,toString,toUpperCase,valueOf

(※岡田注:確認したところサポートされていると表記されていますが、正常に動きませんでした)

■SwiffyはJavaScriptと連携できる。


SwiffyからHTMLに記述されたJavaScriptを実行する事ができます。
また逆に、JavaScript側からSwiffyに値を送る事ができます。

Androidの場合も同じようにSWFからJavaScriptを実行する事ができますので、
共通して使えるという事になります。

やり方は非常に簡単です。

■JavaScriptからSwiffyに値を送る

まず、JavaScriptから値をSwiffyに送る方法を先に書きます。

なんと一行だけでオッケーです。
Swiffy側で用意されている「setFlashVars」という関数を使用する事によって、

setFlashVars(値の名前=値);

こんな感じで簡単に値を渡す事ができます。

下の例は、Swiffyに初期変数を渡す例です。

・JavaScript側

<script type="text/javascript">
 
var stage = new swiffy.Stage(document.body, swiffyobject);
 
//「a」という変数に「123」という値を入れる。
stage.setFlashVars("a=123");
 
//複数の場合は&でつなげばOK!
//stage.setFlashVars("a=123&b=789");
 
//Swiffyコンテンツを再生する。
stage.start();
 
</script>

これで、Swiffyの中にaという変数に123という値を入れて再生を開始できます。
簡単です。。
もちろんJavaScriptの関数の中に入れれば、ムービーの途中でも外部から値を受け取る事ができます。

■SwiffyからJavaScriptを呼び出す

次にSwiffyからJavaScriptに定義した関数を呼び出す方法です。
こちらも簡単です。

getURL(javascript:void( + javascriptの関数 + ));

と書くだけ。これでHTML側のJavaScriptを実行できます。

SWFとJavaScriptの連携については、こちらの記事に詳しい記述方法が掲載されています。

FlashからJavaScript関数を呼び出す
http://www.openspc2.org/reibun/FlashMX2004/ActionScript/LiveConnect/008/

では、先ほどの初期変数「a」の値を変えるスクリプトを書いてみましょう。

・JavaScript側

<script type="text/javascript">
var stage = new swiffy.Stage(document.body, swiffyobject);
 
//初期変数「a」という変数に「123」という値を入れる。
stage.setFlashVars("a=123");
 
//Flashから呼び出だす関数
function hoge(){
 //変数「a」に値「456」を代入する。
 stage.setFlashVars("a=456");
}
 
//Swiffyコンテンツを再生する。
stage.start();
</script>

・Flash側(Swiffy)

//getURLの中に javascript:void( + javascriptの関数 + ); と書けばOK!
onClipEvent(mouseDown){
	getURL("javascript:void(hoge())");
}

Swiffyをクリックすると、aという変数が123から456に変化したのを確認できると思います。

■Swiffy v3.7がサポートしていない機能

もちろんできない事もあります。

まだベータ版なので、あまりできない事をリストしても仕方ないのですが、
Swiffy v3.7で使えない気になる機能をリストアップしてみました。

しつこいですが、これらはすべてSwiffyランタイム v3.7の場合です。
できない事は今後減ってくると思います。

非対応機能 解説
BitmapObject 動的なbitmapを操作できない。
9スライス 9スライスはできない。
ブレンドモード/フィルター効果 フィルターはモバイルのみ非対応、別途画像を用意し代用する。
テキストフィールドの「テキスト入力」
createTextField
ビットマップテキスト
テキストフィールドのカーニング
テキスト周りは少し弱い
SWFとSwiffyではテキストの埋め込みをしても位置や大きさがずれるので注意が必要です。

マルチタッチ AS3に対応していないので。
レンダリング品質の変更 _quality = “LOW”とかできない
setMask タイムラインの「マスクレイヤー」は対応しています。

■JavaScriptと連携すれば利用可能な機能

SwiffyからJavaScriptをたたく事ができるので
回避できる事があります。

非対応機能 解説
外部ファイルの読み込み
(loadMovieやloadVariablesなど)
値であれば、JavaScriptと連携することによって可能。
loadMovieは無理です。
ローディング関係
_framesLoadedは中身が_totalFramesと同じ値になる。
getBytesTotal/getBytesLoadedはダミー値1000が入ってしまう。
Swiffyはコンテンツが全て読み込まれてから、表示するようです。
しかし、たまに読み込みが終わっていない間に再生を始める事がありました(??)
回避するには、Swiffy側は読み込みされたかどうかをフラグでループ監視しておき、
HTML側のonloadイベントでsetFlashVarsでフラグ解除の値を送る。
サウンドの再生 そもそもモバイルの場合はタッチを伴わないと音を再生できないのですがHTML側にaudioタグを用意して、JavaScript経由で再生する。
デバイスの向き/傾きなどの取得 HTML側で値を取得し、Swiffyに値を送って使います。デバイスの向きの取得については第4回HTML編で解説いたします。

[FYI]Swiffyランタイムの過去のバージョン

Swiffyランタイムの過去のバージョンは以下にあります。

[v4.0]

[v3][v3.1][v3.2][v3.3][v3.4][v3.5][v3.6][v3.7][v3.8][v3.9]

[v2.0][v2.1]
[v1.0]

One Comment

  1. […] Swiffyランタイムv3.7がサポートしている機能/サポートしてない機能 http://hi-posi.jp/?p=1919 […]

Leave a Reply