携帯Flashでダイナミックテキストの中身が動的に変わる場合、文字が長いとテキストが切れてしまいます。
あらかじめテキストの文字数を制限したりしなくても、ダイナミックテキストのscrollプロパティを変更することで簡単にテキストを縦スクロールさせて内容を表示させることができます。
scrollプロパティはFlashLite1.1でも使用可能です。
文法
FlashLite1.1ではダイナミックテキストにインスタンス名を設定できませんが、変数名を指定することができます。
テキスト変数名.scroll
テキストのプロパティ「scroll」の値を増減させることでテキストがスクロールして表示されます。
テキスト変数名.maxscroll
テキストのプロパティ「maxscroll」でスクロール可能な行数が取得できますが、
scrollプロパティの値がmaxscrollを超えたり1未満になったりしてエラーになることはないので特に条件付けをする必要はありません。
制作手順
・パブリッシュバージョンはFlashLite1.1とします。
・ステージサイズは240px×240pxとします。
・ダイナミックテキストを作成し、「_等幅」12pxで複数行にしておきます。
「テキストの周囲にボーダーを表示」をチェックしておくとテキストの背景色が白になります。
背景と同じ色にしたい場合はボーダーをOFFに、任意の色にしたい場合はさらにテキストの下レイヤーにシェイプを配置するとよいです。
・actionレイヤーとlabelレイヤーを作成し、3フレーム目まで広げます。
actionレイヤーとlabelレイヤーのみキーフレームにします。
・labelレイヤーの1フレーム目のフレームラベルは「init」,3フレーム目は「rollOver」とします。
・actionレイヤーにフレームアクションを記述します。
2フレーム目
// ボタンフォーカスをOFF _focusrect = false; // ダイナミックテキストの内容を設定 scrollText = "サンプルテキスト\n"; (中略) scrollText = scrollText add "サンプルテキストサンプルテキスト\n"; // 初期スクロールを実行 set("currentBtn", 1); call("rollOver"); stop();
※初回に一度だけスクロール処理を呼び出すことで「最初に上をクリックした場合の不具合」を防止することができます。
3フレーム目
// ボタンの上下移動を取得 if (currentBtn == 1) { if (scrollId == 2) { scrollFlg = "up"; } else { scrollFlg = "down"; } } else if (currentBtn == 2) { if (scrollId == 3) { scrollFlg = "up"; } else { scrollFlg = "down"; } } else if (currentBtn == 3) { if (scrollId == 1) { scrollFlg = "up"; } else { scrollFlg = "down"; } } scrollId = currentBtn; // テキストスクロールを実行 if (scrollFlg eq "up") { scrollText.scroll--; } if (scrollFlg eq "down") { scrollText.scroll++; }
※「++」は現在の値に1増やす、「–」は現在の値から1減らす、の意味です。
・ヒットエリアにのみシェイプを配置した隠しボタンを3つ配置し、以下のスクリプトを記述します。
ボタン1
on (rollOver) { set("currentBtn", 1); call("rollOver"); }
ボタン2
on (rollOver) { set("currentBtn", 2); call("rollOver"); }
ボタン3
on (rollOver) { set("currentBtn", 3); call("rollOver"); }
・パブリッシュして完成です。
実行例
実行例はこちらからご確認下さい。
→URLをメールで送る
http://ookura.tanikaze.com/Sample/post5034/
サンプルファイル
sample5034.zip
上記サンプルのFlashファイル一式です。