以前、1ft-seabass.jp.MEMO – Google Swiffyがversion 3.3にアップデートされてた。で紹介したように10/5にまたバージョン3.4へアップデート。
3.4という数字の割には結構魅力的な更新とお見受けします。
October 5, 2011 (version 3.4.0)
New support for SWF features:
SWF 6 clip events (e.g. onRollOver).
Fixes in this release:Improved rendering and ActionScript execution performance.
Improved handling of masks.
Google翻訳してみました
「SWF 6 clip」が「SWF 6個のクリップ」になって明らかにおかしいかったのは修正しています。
SWFの機能のための新しいサポート:
SWF 6 クリップイベント(例えばonRollOver)。
このリリースでの修正:レンダリングとActionScriptの実行パフォーマンスを改善。
マスクの処理を改善しました。
おお、ついにSWFのバージョン6系のサポート。
そもそもマスクは期待していなくて調査してなかったのですが、改善しているということは使用可能ってことですね。
onRollOverとマスクを試してみる
マウスを目玉が追うとサンプルで試してみます。マウスを目玉に乗せると瞬きをします。
FLASH
[SWF]https://www.1ft-seabass.jp/memo/archives/google-swiffy-else_5/google-swiffy-else_5.swf,320,480[/SWF]
.fla(CS4作成)データダウンロード:google-swiffy-else_5.zip
目玉部分は白目部分からはみ出ないようにマスク処理をしています。
スクリプトは以下のとおりです。
// マウスを追う挙動 eyeR.onEnterFrame = chaseMouse; eyeL.onEnterFrame = chaseMouse; function chaseMouse(){ // 角度算出 var dX:Number = _xmouse - this._x; var dY:Number = _ymouse - this._y; var rad:Number = Math.atan2( dY, dX ); // 反映 this.iris._rotation = rad * 180 / Math.PI; } // マウスオーバーでウインクする挙動 eyeR.onRollOver = winkAciton; eyeL.onRollOver = winkAciton; function winkAciton(){ this.wink.gotoAndPlay( 1 ); }
HTML
うまくいきました!マスクもonRollOver,onEnterFrameも問題なく変換していますね。ちょっと瞬きのフレーム動作が引っかかってあやしいかな?
また、function内のthisはちゃんと記述しないとスコープが意図しない感じになったので、明記しています。
おわりに
3.3の改修によってバージョン6の記述もサポートされ始めたようです。マスクのレンダリングも若干フチが怪しいですが許容範囲です。
ドットシンタックスでアクションの記述ができるようになると、スクリプトが書きやすくなるので収穫ですね。
それでは良きGoogle Swiffy Lifeを。