1 2 3 4 5 6 7 8 9 10 |
ケータイ向けFlash Lite1.1について PC向けFlashや、次世代のケータイFlash Lite2.0以降に比べ 旧世代のFlash4をベースにしているため制限が多いLite1.xですが いまだLite1.x対応携帯のユーザーは数多く 多くのケータイFlashサービスが、Lite1.1からを対象としているのが現状です。 PC向け、ケータイ向けと平行して制作している場合混乱することが多々あり メモ代わりにケータイ向けFlashLite1.xできないコトと対処法を、 列挙したいと思います。 ※基本的にはPC向けと比較してできないことを書いていきます。 |
◆Flash Lite1.xの豆知識
Lite1.1での制作において
Flash4相当のアクションスクリプトで制作するが、
一部Flash5のスクリプトfor文、switch文、Mathオブジェクトが使用可能
※Mathは近似値の出力になり、計算を繰り返すと誤差が生じるため多様は避ける
・インライン再生時(html内にswfを配置)上下キーはhtmlのスクロールに
予約されボタンやサウンドなどが使用不可。
インタラクティブ再生時(swfのみを表示する再生方式)のみボタンの制御、サウンドの再生が可能。
キー操作のスクリプトはボタンスクリプトにのみ設定できる。
例)on(press){} on(rollOver){} on(rollOut){} on(keyPress,”<Enter>”){}など
ケータイの上下キーでのフォーカス移動は
ボタンのみがフォーカス対象になり
上キー(UP)はSHIFT+TAB、下キー(DOWN)はTABに相当した動きをする。
フォーカスされたボタンはオーバーフレームに切り替わる。
※ボタンのPressのフレームは反応しない
・ダイナミックテキストは変数扱い
◆Lite1.1で出来ないこと、アニメーション編
・MC内のアニメは、マスクとして動作しない。(Flash Player6以降からの機能)
・フィルタ効果使用不可。( Flash Player8以降から導入)
・アルファ値変更のアニメは著しくワークメモリを使用するため避ける
◆Lite1.1で出来ないこと、スクリプト制御編
対処法については思いつく方法をざっと書いてみましたが
誤りや、もっとよい対処法があるかもしれません
全ての詳細を書いていくとキリがないので、簡潔に方法のみを書き出しました。
機会があれば細かく対処法を書いていきたい思います。
<できないこと一覧>
・functionが使えない
・onClipEventが使えない
・onEnterFrameが使えない
・setIntarvalが使えない
・depth深度変更ができない
・フォーカス制御できない、フォーカス色の指定ができない
・MCに、ボタン機能を設定できない
・シェアードオブジェクトにアクセスできない
・(他階層へのアクセスに)ドットシンタックスが使用できない
・スクリプトでマスクを設定(setMask)できない
・_height,_widthの変更(set)ができない、getのみ
・lineToがない線が引けない。(当然塗りもない)
・createEmptyMovieClipで新しいMCを生成できない、attachできない
・配列が使えない
・ボタン押しっぱなしの判定はできない(ドラッグ、リリース等)
・jpgやsound読み込みできない
<対処法>
・functionが使えない
→call()を代用する、引数が使えない為、専用の変数を使用して関数っぽく使うとよい
・onClipEventが使えない
→キーイベントはボタンスクリプトで対処する、そのほかはフレームアクションを駆使
・onEnterFrameが使えない
→専用MCを作成してフレームループで代用
・setIntarvalが使えない
→フレームループとgetTimerなどの組み合わせで代用
・depth深度変更ができない
→deplicateMovieClipで複製時のみ深度設定できるので、
都度、リムーブ、デュプリケートで深度を新たに設定配置する
・フォーカス制御できない、フォーカス色の指定ができない
→ボタンスクリプトのフォーカスを駆使する!
→_focusrectをfalseに設定し、MCでフォーカスの当たった演出をする
・MCに、ボタン機能を設定できない
→ボタンシンボルのボタンスクリプトで我慢
・シェアードオブジェクトにアクセスできない
→サーバ連携し、サーバサイドで値を管理するなどの対処が必要
Flash側の対応だけでは不可能、
・他階層へのアクセスにドットシンタックスが使用できない
→同一階層のmcにのみドットシンタックスを使用できるようです。
(例)temp_mc._x=100 または、temp_mc:_x=100
※Flash MX 2004以降、Lite1.x書き出し時にFlash4の構文に対応したものに一部変換しているらしい。
・スクリプトでマスクを設定(setMask)できない
→背景色と同じ何かで上から覆い隠すとか?
・_height,_widthの変更(set)ができない、getのみ
→代わりにスケール(_xscale, _yscale)で変更する
・lineToがない線が引けない。(当然塗りもない)
→1*1pxのMCを伸ばしたり、角度をつけて線に見せる。
※1px以下の線は表示されなくなる場合がある
・createEmptyMovieClipで新しいMCを生成できない、attachできない
→duplicateMovieClipで我慢
・配列が使えない
→for文で変数をたくさん作る
※ヘルプにはこの方法を、配列のシミュレートと書いてあるけど、結局変数を量産するだけ、、、
・ボタン押しっぱなしの判定はできない(ドラッグ、リリース等)
例)releaseOutSide、dragOver、dragOut、startDrag、stopDragがない
→対策が思いつかない。
・jpgやsound読み込みできない
→swfにくるんで各要素を読み込む、使用メモリの上限に注意が必要
※unloadMovieしてもメモリは開放されない
PC向けFlashで当たり前のようにできることがLite1.xではゼンゼンできません
しかしながら、創意工夫しだいでPC版にも引けをとらない
リッチな表現だってできるはずです(たぶん)。
まだまだ課題は多く全ての問題点を把握し網羅しているとはいえませんが
思いつく限り今後も記入していきたいと思います。