文字列を分配して遊ぶ
'08/05/21

ペットの名前を表示するとき、ダイナミックテキストを利用します。
大抵は取得した名前をそのまま表示するだけです。
いや、むしろそれで十分なんだとは思うんですけど(^^;
今回は、名前の長さに合わせて、一文字ずつのパーツに分けて表示させてみたいな~と思ったので、もうちょっと加工してみました。ちょっと遊びができて、アクセントになったのではないでしょうか?
※ちなみにサンプル撮ろうと思ったらなっつさんのチョコちゃんが遊びに来ていたのでパシャリ、です。
環境はWindowsXP : Flash MX Professional 2004 です。
流れとしては
名前の文字数によって、生成するMCの数が変わってきます。
そのため、まず、一文字ずつ表示するための元となるシンボルを作ります。
シンボル名は「oneStr」とつけておきました。テキトーです。
手前に文字を表示させるためのダイナミックテキストを配置。
奥側に名札の背景となるMCを配置しています。
このダイナミックテキストに「StrN」と名前をつけておきます。テキトーです。テキトーすぎて自分で分からなくなります。
※今回はバックのプレート部を少し回転させたかったので、バックにおいてあるグレーの部分は別のMCです。このMCにはランダムで角度が変わるように設定してありますが今回のメモでは割愛させていただきます。
このシンボル「oneStr」をリンケージします。
「ウィンドウ」 - 「ライブラリ」 で表示されたウィンドウ内の,シンボル「oneStr」の上で右クリック - 「リンケージ」を選択。
識別子 に oneStr と入力。
ActionScript に書き出し にチェックを入ます。
これでスクリプトで書き出す準備ができました。
あとは_rootのタイムランへ表示用のスクリプトを記述します。
_root (1フレーム目)
_root (2フレーム目)
これだけ。
例えば,うちのてこてこの場合は。
mypetoname 「てこてこ」
mypetNum 「4」
一文字目を格納するMC名 「oneStr0」 (自動生成)
配列objArrayの一つ目 objArray[0] に 「oneStr0」 が入る。
oneStr0内に配置されているダイナミックテキスト「StrN」に 「て」 が代入。
これを4回繰り返すようになります。
格納するときの
そんなに複雑なことはやっていないので,意外にシンプルです。
今度はコレを応用したフレームや背景を作ってみたいなあと計画中です。
何かの参考になれば幸いです。
それにしても…うまい変数のつけ方はないもんでしょうか…mypetnameって…お掃除用品かよって感じです(笑)
流れとしては
- 名前を取得
- 名前を一文字ずつ分解
- 文字数分だけムービークリップ(以下MC)を生成
- 配置
名前の文字数によって、生成するMCの数が変わってきます。
そのため、まず、一文字ずつ表示するための元となるシンボルを作ります。

手前に文字を表示させるためのダイナミックテキストを配置。
奥側に名札の背景となるMCを配置しています。
このダイナミックテキストに「StrN」と名前をつけておきます。テキトーです。テキトーすぎて自分で分からなくなります。
※今回はバックのプレート部を少し回転させたかったので、バックにおいてあるグレーの部分は別のMCです。このMCにはランダムで角度が変わるように設定してありますが今回のメモでは割愛させていただきます。
このシンボル「oneStr」をリンケージします。
「ウィンドウ」 - 「ライブラリ」 で表示されたウィンドウ内の,シンボル「oneStr」の上で右クリック - 「リンケージ」を選択。
識別子 に oneStr と入力。
ActionScript に書き出し にチェックを入ます。
これでスクリプトで書き出す準備ができました。
あとは_rootのタイムランへ表示用のスクリプトを記述します。
_root (1フレーム目)
//名前を取得するための設定
var url:String = _root._url;
this._lockroot = true;
System.security.allowDomain(url);
_root (2フレーム目)
mypetname= _root.blogpetname; //ペットの名前取得
mypetNum = mypetname.length; //ペットの名前の文字数を取得
//ペットの名前が取得できなかった場合の処理
if (mypetname ==null){
mypetname="BlogPet"; //とりあえず"BlogPet"にしておく
mypetNum = mypetname.length;
}
//ペットの名前を分配して格納する配列
objArray =new Array();
//名前の文字数分だけ繰り返し
for(var i=0; i<mypetNum;i++){
//一文字分を格納するのMCを生成
_root.attachMovie("oneStr","oneStr"+i,i);
//それを配列に格納
objArray[i] = eval("oneStr"+i);
//onStr内に配置してあるStrNへ、一文字格納
objArray[i].StrN.text = mypetname.charAt(i);
//X座標は右から順番に12pxずつずらして配置
objArray[i]._x = 130-(mypetNum-i)*12;
//Y座標はランダムにずらす
objArray[i]._y = 185-Math.round(Math.random()*10);
}
stop();
これだけ。
例えば,うちのてこてこの場合は。
mypetoname 「てこてこ」
mypetNum 「4」
一文字目を格納するMC名 「oneStr0」 (自動生成)
配列objArrayの一つ目 objArray[0] に 「oneStr0」 が入る。
oneStr0内に配置されているダイナミックテキスト「StrN」に 「て」 が代入。
これを4回繰り返すようになります。
格納するときの
mypetname.charAt(i);これはmypetnameという変数の i 文字目を取得する、という意味です。
そんなに複雑なことはやっていないので,意外にシンプルです。
今度はコレを応用したフレームや背景を作ってみたいなあと計画中です。
何かの参考になれば幸いです。
それにしても…うまい変数のつけ方はないもんでしょうか…mypetnameって…お掃除用品かよって感じです(笑)
Comments
http://fghjejrjtyghprp.com
Posted by v86tslo27a0q" title="Click to visit v86tslo27a0q's website or send an email">v86tslo27a0q at '08/09/03 22:04
algettrocrac
Posted by liacbocro" title="Click to visit liacbocro's website or send an email">liacbocro at '08/11/17 06:15
TrackBacks
このエントリにトラックバックはありません




