携帯電話向けフラッシュ(SWF 4)作成の際の注意事項のまとめ。
携帯電話対応のフラッシュを作る場合、SWF 4 規格に合わせて制作する必要があります。
- 最近では SWF 6 以降の規格に準じたガラケー(スマートフォンでない従来型の携帯電話)もありますが、KDDI/沖縄セルラーのガラケーなど、対応が進んでいないものもあります。
ここでは、携帯電話に対応するためのフラッシュを制作するに当たっての注意事項をまとめておきたいと思います。
- 携帯電話向けフラッシュで動作するアクションスクリプトに関する注意事項は、携帯電話向けフラッシュ(SWF 4)で動作するアクションスクリプトで解説しておりますので、そちらをご覧ください。
- 本稿は、PalaFla!(パラフラ)またはSuzuka(すずか)で開発される方を読者として想定しております。純正のフラッシュの場合、一部記述が異なっているものがあります。
SWF 4で外部リソース(ファイル類)を読み込む場合。
SWF 4 規格で外部リソース(ファイル類)を読み込む場合の注意事項です。
- 読み込めるのはフラッシュとテキストのみです
-
従って、静止画像を直接読み込む事は出来ません。
ただ、静止画像を SWF 4 のフォーマットに収める事で、フラッシュとして読み込む事は可能ですので、この方法を利用すれば良いでしょう。
- 読込先はスプライト(ムーヴィクリップ)となります
-
空のスプライトを用意して、それに対して読み込む事となります。
詳細はSWF 4で外部から読み込んだフラッシュを操作するにはをご覧ください。
- 容量制限を忘れずに
-
読込元となる親フラッシュと、読み込む子フラッシュ等の容量の合計が上限に達しないようにする必要があります。
但し、同じ階層に子フラッシュを読み込む事で、前にあった同じ階層のリソースは消える事となるため、これを活用して複数のフラッシュを交代で読ませると言う事も考えられます。
この場合、フラッシュ読込の度にパケットが消費される事を忘れないでください。
- 多くの方はパケ・ホーダイやダブル定額と言った定額制プランに入っていると思われますが、これらのプランは必須ではないため、入っていない方がいてもおかしくはありません。
SWF 4で使えるリソース(ファイル類)。
携帯電話対応のSWF 4で使えるリソース(ファイル類)としては、以下ものもがあります。
静止画像。
携帯電話対応の SWF 4 規格では、静止画像はフラッシュに直接イヴェントやレイヤとして埋め込む場合に限り利用出来ます。
PalaFla!(パラフラ)またはSuzuka(すずか)の場合、以下の静止画像が使えます
- GIF画像 (すずかのみ)
-
GIF画像は何故かパラフラでは使えません。
また、アニメーテッドGIF画像の場合、すずかでも第一コマのみが有効となります。
- ベースライン JPEG 画像
-
ベースライン JPEG画像とは、いわゆるプログレッシヴでないJPEG画像の事です。
- 上記は厳密には正しい定義ではありませんが、現状では JPEG 画像形式はベースライン方式とプログレッシヴ方式しか利用されていないため、実質的に上記の定義で良い事となります。
プログレッシヴ JPEG画像を利用すると、正常に表示出来なくなりますので、くれぐれも注意してください。
- 利用したい画像がプログレッシヴ JPEG画像の場合は、ベースラインに変換する必要があります。
- ビットマップ
-
ウィンドウズ形式のビットマップが使えます。
特に透過したい場合は、必ずビットマップかPNG画像にする必要があります。
- JPEG画像も透過出来ない事はないのですが、JPEG画像の圧縮方式により正常に透過出来なくなります。
- PNG画像
-
透過やアルファチャネルも有効です。
- PDR画像
-
PDR画像とは、パラフラ上で利用出来るヴェクタグラフィックで、すずかでも利用出来るようになっております。
作成には、
が用意されておりますが、その他にもサードパーティ(?)から
なども出されております。
ビットマップやJPEG画像などのラスタ画像と違って
- 縮小してもドット抜けが起こり難い
- 透過部分が綺麗に処理出来る
と言う長所がありますが、モバイルではメモリを消費し易いと言う欠点もあります。
- SVG画像
-
パラフラではWMF画像も対応しているようです。
これもPDR画像同様の長所と短所を持ちます。
フラッシュ。
PalaFla!(パラフラ)またはSuzuka(すずか)の場合、他のフラッシュはアクションスクリプトを使って子フラッシュとして読み込む場合のみ利用出来ます。
- すずかではレイヤとして利用する事も出来ますが、その場合第一フレームのみが有効となります。つまり、静止画としてのみ利用出来ると言う事です。
当然、SWF 4 規格に従っている必要があります。
音源。
携帯電話上のフラッシュプレイヤの多くは、当該端末で利用出来るMIDIなどのみに対応しております。
機種やキャリアに依って異なりますので注意してください。
- SMAF (*.mmf)
-
KDDI/沖縄セルラー及びソフトバンク端末で利用出来ます。
- MFi (*.mld)
- SMF (*.mid/*.midi)
-
ドコモで利用出来ます。
テキスト。
イヴェントやレイヤとして利用する場合、変数名を与える事でアクションスクリプトを用いて動的に表示内容を変化させる事も可能になります。
- 具体的な方法は、ご利用のツールの説明に従ってください。
一方、外部リソースとしてテキストファイルをアクションスクリプトで読み込む場合、所定の書式にする必要があります。
具体的には、
変数名=
代入したい文字列[&
変数名=
代入したい文字列]…
と言うように、クエリ列の形式で記述したテキストとする必要があります。
このテキストを読み込むと、読み込み先となるスプライト内のプロパティ値として指定された文字列が入ります。
携帯電話対応フラッシュを作成するに当たって特に注意したい事。
携帯電話対応のフラッシュを作成するに当たって、特に以下の点に注意してください。
携帯電話対応フラッシュのファイルサイズ。
現行機種の場合、100キロバイト以内とすれば良いとされておりますが、HTTPを通じて取得する場合、応答ヘッダなどが加わるため、若干小さめにした方が安全です。
また、他のフラッシュを読み込む場合、元となるフラッシュと読み込んでいる子フラッシュの容量の合計が上限を超えないようにする必要があります。
フラッシュプレイヤのメモリ使用量に注意してください。
PC向けフラッシュの場合、OSがプレイヤの実行メモリが不足してもスワッピングしてくれるので、表示不可能と言う事には先ずならないのですが、携帯電話の場合、スワッピング先がない場合が多いため、どうしてもメモリ不足の恐れが生じます。
- メモリ不足を来たすと、画面の全体または一部が赤くなったり、ダイアログが出て停止してしまう場合があります。
現行機種の場合、2,000キロバイト以内に抑えると良いと思われます。
- KDDI/沖縄セルラーのガラケー端末だとこれでも足りないかも知れません。
また、メモリ使用量は携帯電話のCPUやOSにも依存すると思われるので、なるべく少なくするに越した事はないでしょう。
携帯電話上のフラッシュプレイヤのメモリ使用量を知るには。
モバイル環境でのメモリ使用量の大体の値を知るには、実機またはドコモ公式のシミュレータ上で以下の式の結果を表示させるようにすれば良いでしょう。
fscommand2("GetTotalPlayerMemory")-fscommand2("GetFreePlayerMemory")
尚、この式は実機または公式シミュレータ上でのみ有効ですので、ツール上の trace()
函数での出力は出来ません。
必ず実機か公式シミュレータ上で実行してください。
- 実機または公式シミュレータ上で実行すると、キロバイト単位で消費メモリ量が表示されるでしょう。
メモリ使用量を節約するには。
- 変数をなるべく使わない
-
使い廻すなどして、変数の数をなるべく減らすようにします。
加えて、SWF 4 では変数を削除する方法がないので、一時的な変数もむやみに使わないようにします。
- SWF 6 以降などで、使わなくなった
null
値を入れる事でメモリが節約出来るとされておりますが、携帯電話向けのフラッシュでは、使わない変数にはどんな値であっても代入すべきではありません。
- SWF 6 以降などで、使わなくなった
- ラスタ画像を用いる
-
ベクタ画像は描画のためにメモリを喰うので、ラスタ画像にした方がメモリは節約出来ます。
ただ、縮小を伴うとドット抜けが起きたり、拡大した時にドットの間隔が不揃いになるなどの弊害もあるので、状況を考えて選択しましょう。
- スプライトを使い廻す
-
スプライトの複製でメモリは大きく消費されます。
イヴェント上にスプライトを置いて、不要になったら削除するなどすると良いでしょう。
インタラクティヴなフラッシュにするには。
携帯電話では、端末の仕様に依り、HTML 文書に埋め込んだフラッシュでは入力操作が無効になります。
このため、ゲームなどのインタラクティヴなフラッシュを作るのであれば、当該フラッシュに直接アクセスするようにします。
- HTML 文書からなら埋め込まずに<a>要素で直接リンクします。
尚、操作については、可能ならダイヤルボタン操作をメインにするようにします。
- カーソル操作の場合、誤ってフラッシュを閉じてしまう操作をしてしまう恐れがあるので、ダイヤルボタンで可能な限り操作出来ると良いでしょう。
- 勿論、プレイステーションポータブルのようにダイヤルボタンを持たない環境もあるので、こう言った環境でも利用出来るようにするのであれば、カーソル操作も可能にすると尚良いでしょう。