2009.02.24
世間では Flash Lite 3.0 が話題になってきている(?)中、今さらながら Flash Lite 1.1 を使って携帯の待ち受けを作りました。
といっても、ホントに時計機能だけの簡単なものです。
Flash Lite 1.1 といえば、Flash 4 と同程度のスクリプトしか扱えないことで、できることにかなりの制限があります。
逆にいえば、難しいことをしなければ今まで通り使えるだろう・・と思っていたのですが^^;
思いのほか苦戦してしまったので、自分用のメモとして残しておこうと思います。
■ムービークリップの指定
こんな簡単なことが・・ってレベルですが、
mcA.mcB.gotoAndStop(2);
と書いていたものは、
tellTarget("mcA/mcB"){
gotoAndStop(2);
}
となります。
URLなどと同じように、/〇〇でルート、../〇〇で一階層上を参照できるようです。
■変数の参照
変数の場合は : を付けます。
/mcA/mcB/:hoge
という感じです。
■ムービークリップのプロパティ
・ムービークリップの座標や大きさを取得する場合は、getProperty() を使います。
getProperty("インスタンス名",プロパティ);
こんな感じになります。
hoge = getProperty("mcA",_x);
・逆に座標や大きさを変更する場合は、setProperty() を使います。
setProperty("インスタンス名",プロパティ,値);
こんな感じになります。
setProperty("mcA",_x,100);
setProperty() を使わず、直接 tellTarget() 内で変更したほうが楽なときもありますね。
■繰り返し処理
繰り返しといえば onEnterFrame ですが、これも使えないらしいです。
なので、フレームを2つに増やしてループさせましょう。
注意することといえば、ルート階層は自動ループしないこと。
2つ目のフレームに、gotoAndPlay(1); を書くことを忘れずに^^;
う~んめんどくさい・・。とりあえずこんなところでしょうか。
またいろいろ使うことがあれば、載せていこうと思います~。
といっても、ホントに時計機能だけの簡単なものです。
Flash Lite 1.1 といえば、Flash 4 と同程度のスクリプトしか扱えないことで、できることにかなりの制限があります。
逆にいえば、難しいことをしなければ今まで通り使えるだろう・・と思っていたのですが^^;
思いのほか苦戦してしまったので、自分用のメモとして残しておこうと思います。
■ムービークリップの指定
こんな簡単なことが・・ってレベルですが、
mcA.mcB.gotoAndStop(2);
と書いていたものは、
tellTarget("mcA/mcB"){
gotoAndStop(2);
}
となります。
URLなどと同じように、/〇〇でルート、../〇〇で一階層上を参照できるようです。
■変数の参照
変数の場合は : を付けます。
/mcA/mcB/:hoge
という感じです。
■ムービークリップのプロパティ
・ムービークリップの座標や大きさを取得する場合は、getProperty() を使います。
getProperty("インスタンス名",プロパティ);
こんな感じになります。
hoge = getProperty("mcA",_x);
・逆に座標や大きさを変更する場合は、setProperty() を使います。
setProperty("インスタンス名",プロパティ,値);
こんな感じになります。
setProperty("mcA",_x,100);
setProperty() を使わず、直接 tellTarget() 内で変更したほうが楽なときもありますね。
■繰り返し処理
繰り返しといえば onEnterFrame ですが、これも使えないらしいです。
なので、フレームを2つに増やしてループさせましょう。
注意することといえば、ルート階層は自動ループしないこと。
2つ目のフレームに、gotoAndPlay(1); を書くことを忘れずに^^;
う~んめんどくさい・・。とりあえずこんなところでしょうか。
またいろいろ使うことがあれば、載せていこうと思います~。
2009.02.18
割と初歩的なことなのですが、Flash内に別のSWFを読み込むことについてです。
今までは、単純に loadMovie() を使っていたんですが、これだと親のFlashからアクセスするときにうまくいかない場合があります。(たとえば、子SWFの中にある変数を読みに行くとか。)
理由は単に、子SWFの読み込みが終わる前にアクセスしてしまうからなのですが。
今回は読み込みが終わった直後に指示を出す必要があったので、スクリプトを見直してみました。
// SWFを読み込むためのローダーを作る
var Loader = new MovieClipLoader ();
Loader.loadClip("hoge.swf", MC);
// 読み込み状況を監視するためのオブジェクトを作る
var load_obj = new Object ();
// 読み込み処理時の処理
load_obj.onLoadInit = function(){
// スクリプト
// スクリプト
}
// Loaderに登録
Loader.addListener( load_obj );
こんな感じにして、読み込みが終わったときに function を実行させることができました。
今までは、単純に loadMovie() を使っていたんですが、これだと親のFlashからアクセスするときにうまくいかない場合があります。(たとえば、子SWFの中にある変数を読みに行くとか。)
理由は単に、子SWFの読み込みが終わる前にアクセスしてしまうからなのですが。
今回は読み込みが終わった直後に指示を出す必要があったので、スクリプトを見直してみました。
// SWFを読み込むためのローダーを作る
var Loader = new MovieClipLoader ();
Loader.loadClip("hoge.swf", MC);
// 読み込み状況を監視するためのオブジェクトを作る
var load_obj = new Object ();
// 読み込み処理時の処理
load_obj.onLoadInit = function(){
// スクリプト
// スクリプト
}
// Loaderに登録
Loader.addListener( load_obj );
こんな感じにして、読み込みが終わったときに function を実行させることができました。
2009.02.17
HTMLでページの中にリンクをするときは、
<a href="a.html#kokkara">リンク</a>
<a name="kokkara">ここからはじめる</a>
の2つを使います。
FLASHの場合もページの途中にリンクするときは、
getURL("a.html#kokkara");
と、全く同じ書き方で大丈夫ですが、
一つ注意があります。
FLASHのページ内リンクは、サーバーにアップされないと働かない!!
と、いうことです。
カンタンなことですが、要注意だと思いました。
<a href="a.html#kokkara">リンク</a>
<a name="kokkara">ここからはじめる</a>
の2つを使います。
FLASHの場合もページの途中にリンクするときは、
getURL("a.html#kokkara");
と、全く同じ書き方で大丈夫ですが、
一つ注意があります。
FLASHのページ内リンクは、サーバーにアップされないと働かない!!
と、いうことです。
カンタンなことですが、要注意だと思いました。
2009.02.17
FLASHを使っていると、↑のように、ボヤボヤ?な画像になってしまっている事があります。
(FRONTのRのところがちょっと横に伸びています。)
FLASH上では大丈夫でも、SWFに書き出すと、このようになってしまい、
とっても困ります
直し方
通常は、ムービークリップの中はこんなカンジですが、
中心点の位置をずらして、
X、Y、の座標を、両方ともマイナスにします!
すると...
→
直ります
動き方や、スクリプトの都合でダメな時もあるかもしれませんが、
バナー等を作る時など、かなり有効なのでは...?
と思いました。
☆★ 3/18 追加でわかったこと ★☆
ボヤケ画像のXとY座標に細かい小数点が入っている時に、これになりやすいです。
例)
452.8 → 452.0
という風に、キリのイイ数字にしてあげると結構スッキリします
2009.02.12
今回もXML読み込みのお話です。
この部分は引っかかることが多いですね、なにか毎回つまずいてるような気がします^^;
XMLファイルのノード内にテキストを書いて、それをFlashで読み込むのですが、改行がうまくいきません。
Flashのほうに、XMLの改行を無視するための
xmlData.ignoreWhite = true;
を書いているのでただ改行しても反映されないのは当然なのですが、Flashの改行コードである \n を入れても改行されない。
で、検索してみたら、こちらにまんまのことが書いてありました。
http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=2313&forum=6&post_id=12907
すばらしいです。
\n は読み込んだ時に \\n になっちゃってるんですね・・
一応抜粋させていただくと、
テキストを検索、置き換え用のスクリプトとして
this.convSentence = function (theStc, oldKey, convKey) {
var sentence_array = new Array();
sentence_array = theStc.split(oldKey);
return sentence_array.join(convKey);
};
実際にテキストを変換するために
textData = convSentence(textData, "\\n", "\n");
※textData はテキストが入った変数
と入れることで、\n の改行がちゃんと効くようになります。
この部分は引っかかることが多いですね、なにか毎回つまずいてるような気がします^^;
XMLファイルのノード内にテキストを書いて、それをFlashで読み込むのですが、改行がうまくいきません。
Flashのほうに、XMLの改行を無視するための
xmlData.ignoreWhite = true;
を書いているのでただ改行しても反映されないのは当然なのですが、Flashの改行コードである \n を入れても改行されない。
で、検索してみたら、こちらにまんまのことが書いてありました。
http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=2313&forum=6&post_id=12907
すばらしいです。
\n は読み込んだ時に \\n になっちゃってるんですね・・
一応抜粋させていただくと、
テキストを検索、置き換え用のスクリプトとして
this.convSentence = function (theStc, oldKey, convKey) {
var sentence_array = new Array();
sentence_array = theStc.split(oldKey);
return sentence_array.join(convKey);
};
実際にテキストを変換するために
textData = convSentence(textData, "\\n", "\n");
※textData はテキストが入った変数
と入れることで、\n の改行がちゃんと効くようになります。