トップ > まとめ記事 | Flash Lite 1.0 / 1.1 > Flash Lite 1.1 の基本が分かる8つのポイント

Flash Lite 1.1 の基本が分かる8つのポイント

Flash Lite が、2.0 や 3.0 と新しいバージョンが登場しているが、まだまだ普及率が少ないため現時点は 1.1 が主流になってくると思う。Flash Lite 1.1 の場合、Flash 4 をベースとしているため、通常の Flash 制作と異なる部分も少なくない。

自分自身でも時折「あれ?どうだったっけ?」とか思う時もあるんで、Flash Lite 1.1 の基本的な部分をまとめてみようと思う。

目次
【1】 Flash ddte 1.1 の基本設定
【2】 1フレーム目に記述するリセットスクリプト
【3】 ムービークリップのプロパティの設定と取得
【4】 変数の設定と取得
【5】 タイムライン制御
【6】 Flash ddte 1.1 で出来ないこと
【7】 ボタンイベントとキーイベント
【8】 Flash ddte 1.1 特有の処理

【1】 Flash Lite 1.1 の基本設定

バージョン
Flash Lite 1.1
画面サイズ
横:240px / 縦:240~266px
容量
100KB 以内
フレームレート
8~12 fps
使用メモリ
1MB 以内
デバイスフォントサイズ
12 / 16 / 20 / 24 px

【2】 1フレーム目に記述するリセットスクリプト

毎回下記を1フレーム目に記述しておくと良いかもしれない。


fscommand2("FullScreen", true);	//全画面設定
fscommand2("SetQuality", "high");	//画質設定(high / medium / low)
_focusrect = false;	//ボタンフォーカス設定

○fscommand2("FullScreen", true);
フルスクリーンで表示させる処理。記述しなくてもデフォルトでフルスクリーンになるのだが一応記述してみる。

○fscommand2("SetQuality", "high");
画質設定。デフォルトは「medium」になっているため、より綺麗に表示させたい時は「high」にする。ただし画質を良くするとアニメーション処理などの負荷も大きくなるため、コンテンツ内容によって調整を行うのが良い。

○_focusrect = false;
ボタンの周りに表示される黄色い枠線の表示設定。「true」で表示、「false」で非表示。きちんとボタンにロールオーバー処理を施すのであれば「false」で良いが、そうでない場合は、どのボタンにフォーカスされているか不明となってしまうため「true」にした方が良い。

【3】 ムービークリップのプロパティの設定と取得

通常の Flash 作成同様にドットシンタックスで指定可能。


_root.mc1.mc2._x = 50;

※下記の記述でもOK。


//▼アクセス演算子で指定
_root["_root/mc1/mc2"]._x = 50;
 
//▼tellTarget() 関数で指定
tellTarget("_root/mc1/mc2")
{
	_x = 50;
}

【4】 変数の設定と取得

通常の Flash 作成同様にドットシンタックスで指定可能。


_root.mc1.mc2.abc = "abc";
_parent.mc1.mc2.car = "車";
mc1.flag = true;

【5】 タイムライン制御

タイムライン制御は tellTarget() 関数を使用する。ドットシンタックスはNG。


tellTarget("_root/mc1/mc2") {
	gotoAndPlay(10);
}

下記はエラーとなるので要注意。


_root.mc1/mc2.gotoAndPlay(10);
//⇒ Flash Lite 1.1 ではエラー
※tellTarget() 関数のスラッシュシンタックスについての補足
tellTarget("/") = tellTarget("_root")
tellTarget("../") = tellTarget("_parent")
レベルを指定する場合は tellTarget("_level0") など

【6】 Flash Lite 1.1 で出来ないこと

function 代用

Flash Lite 1.1 には、function() 関数が用意されていないが、かわりに、call() 関数が用意されている。こちらを利用する。

上記のように、再生をしない適当なフレーム(最後の方など)にラベルとスクリプト記述する。そして、call() 関数でそのラベル名を指定することで、該当フレームに記述されたスクリプトが実行される。ただし、引数や戻り値を持たせることができないので要注意。

▼ラベル「add」フレームの処理


c = a + b;

▼1フレーム目の処理


stop();
//変数
a = 2;
b = 3;
//call() 関数で「add」ラベルを指定する
call("add");
//「add」ラベルに記述されている「c = a + b;」が実行される
trace(c);
//出力⇒「5」

enterFrame 代用 1

簡単な方法としては、空のムービークリップを作成して、1フレーム目に実行させるスクリプトを記述し、1フレーム目と2フレーム目をループ再生させる。

enterFrame 代用 2

上記の方法だと2フレームに1回の処理実行となってしまう。 call() 関数を利用すると毎フレーム処理を実行させることができる。

▼ラベル「roop」フレームの処理


[毎フレーム実行させる処理]

▼1フレーム目の処理


call("roop");
play();

▼2フレーム目の処理


call("roop");
prevFrame();

配列 Array 代用

eval() 関数を利用して仮想的に処理を行う。

一次元配列


//配列を設定
arrCount = 0;
for (i = 0; i < 5; i++) {
	eval("arr" add i) = "a" add i;
	arrCount++;
}
//配列を出力
for (i = 0; i < arrCount; i++) {
	trace(eval("arr" add i));
}
//出力⇒「a0, a1, a2, a3, a4」

二次元配列


//配列を設定
arrCount1 = 0;
arrCount2 = 0;
for (i = 0; i < 2; i++) {
	for (j = 0; j < 3; j++) {
		eval("arr" add i add "_" add j) = "a" add i add "b" add j;
		arrCount2++;
	} 
	arrCount1++;
}
arrCount2 /= arrCount1;	//個数を調整
//配列を出力
trace(arrCount1);
//出力⇒「2」
trace(arrCount2);
//出力⇒「3」
for (i = 0; i < arrCount1; i++) {
	for (j = 0; j < arrCount2; j++) {
		trace(eval("arr" add i add "_" add j));
	}
}
//出力⇒「a0b0, a0b1, a0b2, a1b0, a1b1, a1b2」

【7】 ボタンイベントとキーイベント

Flash Lite の場合、基本的に2通りの作り方になる。

  1. 通常のボタンシンボルを配置してボタンアクションに処理を記述
  2. 空のボタンシンボルを配置してボタンアクションに処理を記述

たとえばゲームコンテンツなどでは、前者はスタートボタンやリプレイボタンなどで利用し、後者はキャラクターをキーボタンで動かしたりする時に利用する。

ボタンアクションのイベントの記述は下記のような感じになる。

▼ボタンをクリックした時


on(press) {
	[ボタン処理]
}

▼キーを押したとき


on(keyPress "2") {
	[ボタン処理]
}

▼複数指定(カンマで区切って複数指定)


on(press, keyPress "0")) {
	[ボタン処理]
}

また、複数キーに対応させた処理などを行う場合、どのキーが押されたのかなどの情報が取得できないため、イベントを複数記述させて処理させる必要がある。

▼複数指定(キー別処理)


on(keyPress "1")) {
	[1キーを押した時の処理]
}
on(keyPress "2")) {
	[2キーを押した時の処理]
}
on(keyPress "3")) {
	[3キーを押した時の処理]
}

【8】 Flash Lite 1.1 特有の処理

携帯ならではの fscommand2() 関数

fscommand2() 関数を利用すると携帯端末やデバイスのシステムなどの情報を取得したり制御を行うことが可能。

▼(例)日付の取得


Y = fscommand2("GetDateYear"); //年
M = fscommand2("GetDateMonth"); //月
D = fscommand2("GetDateDay"); //日

▼(例)バイブレータ機能の制御


fscommand2("StartVibrate", [オンの時間], [オフの時間], [繰り返し回数]);
fscommand2("StopVibrate"); //バイブレータ停止

その他の機能に関してはヘルプ(Flash Lite 固有の言語エレメント)を参考に。

8. 電話リンク

携帯で閲覧するコンテンツなので電話番号のリンクもサポート。


on (press)
{
	getURL("tellto:09012345678"); //電話番号へリンク
}

web ページやメールリンクは通常と同様の書き方。


getURL("http://www.domain.com/"); //Webサイトへリンク
getURL("mailto:mail@domain.com"); //メールアドレスにリンク

getURL() が処理されるために条件があるので要注意。
ボタンアクションに記述された on ハンドラの時のみ使用可能。また1つのイベントに対し処理される getURL() は1つのみ。
※フレームアクションで getURL() を記述しても処理されない。

文字の連結

文字の連結を行う場合は、「+」での連結がNG。「add」を使用する。


txt = "Flash" add "Lite" add "1.1";
trace(txt);
//出力⇒「FlashLite1.1」

文字列の比較演算子

数値の場合は、通常通り「=」や「>=」「>」などを使用可能だが、文字列の場合の場合は、等価「ep」、非等価「ne」を使用する。


txt = "Flash";
if (txt eq "Flash")
{
	//[値が同じ場合の処理]
}
if (txt ne "Flash")
{
	//[値が異なる場合の処理]
}

ランダム値

random() 関数を使って取得


trace(random(5));
//出力⇒「0, 1, 2, 3, 4 のいずれかの数値が出力」
trace(random(5) + 5);
//出力⇒「5, 6, 7, 8, 9 のいずれかの数値が出力」

Math() 関数

基本サポートはされていないが、Math.acos()、Math.asin()、Math.atan()、Math.atan2()、Math.cos()、Math.sin()、Math.pow()、 Math.tan() の定数は利用可能。ただし、エミュレートによる近似値を割り当てているため精度は低い。

サポート外とされている Math.ceil() や Math.round() なども使用できるらしいのだが、誤作動するケースもあるらしい。サポート外の Math() 関数を使用する場合は十注意が必要と思われる。

また、小数点の切り捨てなどを行う場合は、int() 関数で処理が可能。

この記事をブックマークしておく

コメント:2

くま 2011-02-07 (月) 18:02

「enterFrame 代用 2」ですが、下記だと普通に処理できましたよ。

▼1フレーム目の処理(フレーム名loop)
実際の処理
▼2フレーム目の処理
gotoAndPlay("loop");

nextFrame()、prevFrame();では1フレーム消費してしまうのでしょうかね?

ヒカルツカサ(管理人) 2011-02-07 (月) 19:27

コメントありがとうございます!

なるほどです。
くまさんのご指摘の書き方だと、特に1フレーム分、何もしていないという状況にならないのですね。

いやー、ありがとうございます!
勉強になりました!

コメント投稿

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

この情報を記憶する

トップ > まとめ記事 | Flash Lite 1.0 / 1.1 > Flash Lite 1.1 の基本が分かる8つのポイント

記事検索
カテゴリ
RSSフィード

このページの先頭へ戻る