- ベストアンサー
ニュースティッカーの最後まで流しきる方法は?
- ニュースティッカーを作成する際、最後まで文字を流しきる方法について質問します。
- 具体的には、ニュースティッカーが右から流れてきて、特定の位置で止まり、左端から消えるような仕組みを探しています。
- 参考になる情報を探して試してみましたが、うまくいかずに悩んでいます。Windows XP Pro SP2とFlash 8を使用しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Flash の動きの基本は,モーショントゥイーンですよ。 モーショントゥイーン で思うように,物(この場合たまたまテキストフィールド)を動かして, そのテキストフィールドに ActionScript で文字を表示させればいいだけだと思います。 ダイナミックテキストの場合, 動きに回転ができなかったり, setMask でしかマスクがかけられなかったり, アルファがかからなかったりしますが, それはスクリプトで動かしてもモーショントゥイーンで動かしても同じです。 ActionScript で動かしたからと言って,何の解決にもなりません。 それにたかが文字がモーションするくらい, モーショントゥイーン を使っても,ActionScript を使っても, ファイル容量も 数KB(もしくは数バイト)変わる程度でしょう。 >> 右から流れてきて、 >> ある特定の位置まできたら、x座標を固定して、 >> 左端から消えていく感じ どういう感じかちゃんとは想像できませんが, これを見て私が想像する限り, Flash を始めて3日目くらいの人が (人によってはFlash を始めて1時間くらいで), 楽々でモーショントゥイーンでできることだと思いますが。 ======================= 最も言いたいのは上のことですが, ActionScript で動かすなら, 次のように動かすと言うのも "1つの" 方法です。 方法やバリエーションはたくさんあると思います。 本来動かしたいように ActionScript を自分で考えたり,微調整しなければ, 良いようには動きません。 ・・・・・・・・・・・・・・・・・・・・・・・・ Flash で新規ドキュメントを作成し, まず,ステージ上に任意の幅の「ダイナミックテキスト」のテキストフィールドを用意して, そのダイナミックテキストの中に目安として「あいうえおカキクケコ」でも書いておいてください。 そしてそのダイナミックテキストにインスタンス名を付けます。 変数名ではありません。インスタンス名です。 この説明では,「myTXT」 と言うインスタンス名を付けておきます。 そして, レイヤーを追加して 新規で追加した方のレイヤー(「myTXT」のない方のレイヤー)の フレームに次のように書きます。(コピペ可能) ------------------------------------------------- // ある一定の止まる場所の座標を設定(可変) var ittei = 100; // スピードの設定(可変) var spd = 2/10; // 止まる時間(フレーム数)の設定(可変) var stime = 30; // // myTXT を初期座標にセット _root.myTXT._x = Stage.width; // フラグを 0 にセット var flg = 0; // カウントの値を 0 にセット var count = 0; // // // 1フレーム進む時間ごとに毎回実行 _root.onEnterFrame = function() { // もしフラグが 0 であれば if (flg == 0) { // ある一定の止まる場所へ向かう _root.myTXT._x += (ittei-_root.myTXT._x)*spd; // そして 一定の場所の1/100pxまで近づいたら if (_root.myTXT._x<=ittei+(1/100)) { // フラグを 1 にする flg = 1; } // // もしフラグが 1 であれば } else if (flg == 1) { // カウントを開始 count++; // そしてカウントが指定した時間に達すると if (count == stime) { // フラグを 2 にしてカウントを 0 に戻す flg = 2; count = 0; } // もし フラグが 2 になれば // } else if (flg == 2) { // 30px ずつ左に移動 _root.myTXT._x -= 30; // そして myTXT の右端がステージ外に消えたら if (_root.myTXT._x<-_root.myTXT._width) { // フラグを 0 に戻す flg = 0; // myTXT の位置を元に戻す _root.myTXT._x = Stage.width; /* ※※ココに次のテキストを表示させるクリプトを書く※※ */ } } }; -------------------------------------------------- そして, 「制御」→「ムービープレビュー」。 途中,指定座標でいちど止まりますが, 最後の文字まで流しきるものができます。 ======================= 最初にも書きましたが, こんなことスクリプトでするのは変ではないですか? 幾何学的な動きであったり,マウスの座標などによって動的に変化する動きでもありません。 上のようにごちゃごちゃとスクリプトで考えるより, モーショントゥイーンが一番です。 Flash には古来からイージングというモーショントゥイーンの機能もあります。 古来からのイージングの例↓ 「イージング・回転を覚えよう!」 http://www.1art.jp/flash/le/lesson4/lesson4.htm さらに Flash 8 になってからはカスタムイージングという機能がついて, さらにモーショントゥイーンが充実しました。 「カスタムイーズイン・イーズアウト」 http://www.1art.jp/flash/le/lesson4/flash8.htm もし,こういうモーショントゥイーンをされたことがなければ, まずこちらをされてから,どうしても ActionScript で動かしたい場合に, ActionScript で動かすことを考えることをお薦めします。 ちなみに, ココ(教えてサイト)など掲示板に近いものでは, ActionScript で回答したり,その ActionScript をコピペで使う方がずっと楽です。 というか,カスタムイージング などの説明など,文章だけでは不可能です。 そう言った意味,ActionScript で動かすことがさも良いことのように思われるかもしれませんが, そんなことは決してありません。 モーショントゥイーン でキッチリ動かすことがFashの基本で大切なことだと思います。 上で回答したスクリプト例も, モーショントゥイーン をまずイメージして,それをスクリプト化しただけです。
お礼
丁寧なアドバイスありがとうございます。 サンプル提示していただいたActionScriptはうまく動作しました。 ご指摘通り、まずモーショントゥイーンをしっかり勉強してみます。