ロールオーバーでテキストスクロール

このQ&Aのポイント
  • XMLからデータを取得し、タイトルをリスト表示(5件)し、タイトルにロールオーバーでタイトルのテキストが左に流れていく。テキストが流れきったら、右から流れ始める。ロールアウトでテキストは初期の場所に戻る。
  • テキストの流れきったかどうかの判定は、テキストのMCのX座標の位置によって判断しています。テキストの長さは長いものもあれば、短いものもあります。あらかじめ、テキストエリアの幅を長いものに合わせておくと、テキストが流れきった後、右からまた流れ始める際に短いテキストだと流れ始めるまで間が空いてしまいます。
  • テキストが流れきったら、テキストの長短に関わらず、すぐに右から流れ始めるようにしたいのですが、良い方法などありますでしょうか。
回答を見る
  • ベストアンサー

ロールオーバーでテキストスクロール

XMLからデータを取得し、タイトルをリスト表示(5件)し、 タイトルにロールオーバーでタイトルのテキストが左に流れていく。 テキストが流れきったら、右から流れ始める。 ロールアウトでテキストは初期の場所に戻る。 以上のようなflashを作成しようとしているのですが、 悩んでいる部分があります。 テキストが流れきったかどうかの判定は、テキストのMCのX座標の位置に よって判断しています。 テキストの長さは長いものもあれば、短いものもあります。 あらかじめ、テキストエリアの幅を長いものに合わせておくと、 テキストが流れきった後、右からまた流れ始める際に短いテキストだと 流れ始めるまで間が空いてしまいます。 テキストが流れきったら、テキストの長短に関わらず、 すぐに右から流れ始めるようにしたいのですが、良い方法などありますでしょうか。 よろしくお願いします。 環境は以下です。 FLASH CS3 ActionScript2.0

  • Flash
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 #1で回答したスクリプトは,"単なる一例" ですよ。 本題は  テキストフィールドをオートサイズにしておけば  テキストフィールドの幅を検知できるのでそれを使えば良いでしょう。 ということだけです。 また,  テキストフィールドをオートサイズにしておけば  それを包むムービークリップの幅でも検知できますよ。 と付け足しているだけです。 > ロールオーバーした場合のみ流れて、 > ロールアウトすると初期状態の場所に戻るという動きの実現は、 > 現状教えていただいたところから、簡単に実現可能でしょうか。 > 申し訳ありませんが、御回答いただければ幸いです。 まず, ロールオーバーするもの(ボタンやムービークリップ)が必要ではないでしょうか? というかロールオーバーするものはすでに用意されているはずです。 テキストフィールドが動くのですから, テキストフィールドにロールオーバーしたりロールアウトしたときに何か動作させるわけではないでしょう? もしそういうことをしていたら, テキストフィールドが逃げてロールオーバーしにくいです。 ですから テキストフィールド以外の何かロールオーバーするものにロールオーバーしたとき, 例えば,何かの変数(フラグ)を true とかにして, そのフラグが true の時だけ, // 1フレーム進む時間ごとに随時実行 this.onEnterFrame = function() { }; 内が実行されるようにすればできます。 こんな形↓。 // 1フレーム進む時間ごとに随時実行 this.onEnterFrame = function() {   // 何かのフラグがtrueの時だけ ○○ を実行     if(何かのフラグ){       ○○     } }; そして その何かからロールアウトしたとき, テキストフィールドのx座標を 0 か何かにすれば良いと思います。 この上で書いたも,はたとえばの一例です。 ロールオーバーしたときに,  // 1フレーム進む時間ごとに随時実行  this.onEnterFrame = function() {}; 自体を定義して, ロールアウトしたときに,  delete this.onEnterFrame; などをしてもかまわないと思います。 それに, this.onEnterFrame で動かすこと自体も単なる例です。 たとえばモーショントゥイーンで動かしても良いわけです。 モーショントゥイーンで動かして,  // ★ もしテキストフィールドの右端座標が 0 以下であれば  if (_txt._x<=0-_txt._width) {    // ★ テキストフィールドを右に移動    _txt._x = Stage.width;  } ではなくて,  // ★ もしテキストフィールドの右端座標が 0 以下であれば  if (_txt._x<=0-_txt._width) {    // ★ 最初のフレームに戻す    this.gotoAndPlay(1);  } のようにしても良いわけです。 関係ある場所は ★ を付けた部分で, その他は一度動かさないと現実的実体の説明ができないので, ActionScript のみで説明しただけです。 ※ココでは自分のサイトなどにリンクできません。   つまり「こうすればいい」などのデータを提示できないのです。   ActionScriptだけで説明しているのは,   サンプルを作成できないココでの苦肉の伝達方法です。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

テキストフィールドの横幅は, TextField._width で取得できます。 また, テキストフィールドの大きさは中に表示される文字列によって可変にする設定も可能です。 可変にしておけば, テキストが流れきったかどうかの判定は, TextField._x <= 目標座標-TextField._width などで判定できます。     [<---TextField._width--->]←目標座標     ↑  TextField._x 新規ドキュメントを作成して, Flash のパブリッシュ設定を ActionScript2.0 に設定して, 次のスクリプトをフレーム1にコピペし「制御」→「ムービープレビュー」すると, 上で説明したものの一例サンプルが自動で作成できます。 --------------------------------------- // テキストフィールド ttl_txt を 深度 0 の適当な場所に作成 var _txt:TextField = this.createTextField("ttl_txt", 0, 0, 20, 0, 0); // ★テキストフィールドのサイズを可変に設定する _txt.autoSize = true; // タイトルを作成代入する関数 makeTitle の定義 function makeTitle():Void { var rnd:Number = Math.floor(Math.random()*75)+5; _txt.text = ""; for (var i:Number = 0; i<=rnd; i++) { _txt.text += String(Math.floor(Math.random()*10)); } } // makeTitle の初回実行 makeTitle(); // 1フレーム進む時間ごとに随時実行 this.onEnterFrame = function() { // ★例えばテキストフィールを10pxずつ左に移動 _txt._x -= 10; // ★ もしテキストフィールドの右端座標が 0 以下であれば if (_txt._x<=0-_txt._width) { // ★ テキストフィールドを右に移動 _txt._x = Stage.width; // makeTitle の実行 makeTitle(); } }; ------------------------------------------ 関係がある部分には ★ を付けました。 ちなみに, ムービークリップの幅も MovieClip._width で取得できます。 テキストフィールド入りMovieClipを使用するのでしたら, MovieClip._width で同様にしても良いと思います。

taro20082
質問者

補足

御回答ありがとうございます。 実現できました。 実は、もう1点お聞きしたいことがあるのですが。 現状テキストは流れ続けているわけですが、 初期状態は、テキストが静止した状態で表示されていて、 ロールオーバーした場合のみ流れて、 ロールアウトすると初期状態の場所に戻るという動きの実現は、 現状教えていただいたところから、簡単に実現可能でしょうか。 申し訳ありませんが、御回答いただければ幸いです。

関連するQ&A

  • Flash MCにロールオーバーするとスライドインするテキスト

    これをなんとかやってみようと試行錯誤してますがうまくいきません。ロールオーバーさせようとしているMCはマウスがロールオーバーすると拡大するというスクリプトが書かれています。このアクションと同時にマウスのロールオーバー時にテキストをスライドインさせたいのですが、どのようなスクリプトをかけばよいでしょうか? 透明ボタンを作って拡大されたMCとの当たり判定でテキストをスライドインさせる等の試行錯誤をしましたがうまくいきません。どうかご教授よろしくお願いします。 プライベートのチューターとして、時給でチューターを探そうとさえ考えています。

  • ロールオーバーで下の画像を表示させる

    質問番号:7020788を参考にしています。 http://okwave.jp/qa/q7020788.html 一番下に写真(400x400)を置き、その上にmc0~mc3(200×200)を4つ配置しました。 mc0にロールオーバーすればmc0がフェードアウトして200×200だけが写真を見え るようにしたいと考えています。 同様にmc1にロールオーバーすればmc1がフェードアウトします。 しかし、どのmcにロールオーバーしてもmc0~mc3の全体がフェードアウトしてし まい、私が思っておるように動作いたしません。 次にアクションスクリプトを示します。 mport fl.transitions.*; import fl.transitions.easing.*; mc0.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc1.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc2.addEventListener(MouseEvent.ROLL_OVER,onrollOver); mc3.addEventListener(MouseEvent.ROLL_OVER,onrollOver); function onrollOver(eventObj:Event):void { for (var i:Number = 0; i<=3; i++) { TransitionManager.start(this, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); removeEventListener(MouseEvent.ROLL_OVER,onrollOver); } } FLASH CS3でアクションスクリプトは3.0で作っています。どうか対処策を教えて いただきたく思います。

    • ベストアンサー
    • Flash
  • ロールオーバーで下画像を表示させる

    ステージを400x400として写真をおきます。 その上に100x100のmcを重ねます。マウスのロールオーバーで次々に画像が現れ 最終的に1枚の写真として見えるようにしたいです。 今はmcが1つですが、これを16個配置したいと思います。 その方法を教えてください。 FLASH CS3 AS2.0で制作しています。 import mx.transitions.*; import mx.transitions.easing.*; my_mc1.onRollOver = function() { TransitionManager.start(my_mc1, {type:Fade, direction:Transition.OUT, duration:2, easing:None.easeNone}); }

  • Flash、ロールオーバーで情報を表示させたい

    海外向けのサイトで、日本地図の各県にロールオーバーすると、欄外にその県の面積や人口などの情報(テキストor画像)を表示させ、クリックすると各県のサイトへリンクしたい。 情報(テキストor画像)を表示させる位置は、どの県でも同じ位置に固定させたい。 リンクは  on (release)  {   getURL("url", "_blank");  } で分かるのですが、ロールオーバーで各県の情報を同じ位置に次々に表示させる方法が分かりません。 60歳の手習いで、Flash CS4を使っています。よろしくご指導ください。

  • ロールオーバーで…

    ホームページビルダーでページを作っています。 横に2マスある表を1つ作り、横幅を100%に指定、右のセルを幅50%に指定しました。 左側には40x40のサムネイルを100個ほど置いています。全部見るにはスクロールする必要があります。 右側のセルに右側のサムネイルをクリックしたときにプレビューを表示するようにしたいのですがうまく出来ません。 まず、ロールオーバーで右側セルにプレビューを表示することは出来ました(ビルダーの機能で出来ました)。 ---------------------------------------------- <A href="#" id="_HPB_ROLLOVER1" onmouseover="HpbImgSwap('_HPB_ROLLOVER1', 'pict/auto-mes/00/mes00-01-s.jpg'); HpbImgSwap('_HPB_ROLLOVER2', 'pict/auto-mes/00/mes00-01.jpg');" onmouseout="HpbImgSwap('_HPB_ROLLOVER1', 'pict/auto-mes/00/mes00-01-s.jpg'); HpbImgSwap('_HPB_ROLLOVER2', 'pict/blank.gif');"><IMG src="pict/auto-mes/00/mes00-01-s.jpg" width="40" height="40" border="0" name="_HPB_ROLLOVER1"></A> -------------------------------------------------- しかし、右側セル中央に表示指定にしているため一番上・下のものをロールオーバーさせると絵の全部が見えません。 写真のサイズは決まっておらず、まちまちです(縦長横長がランダムにある)。 そこで、ロールオーバーではなくクリックで右セルに表示させる方法とセル中央ではなく画面中央に表示させる方法があれば教えてください。 もしくは、ほかに何か良い方法がないでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • ロールオーバーすると次の外部SWFへ

    環境:MacOS X    FLASH 2004MX ActionScriptの初心者の為に何をするにしてもつまずいてます… 宜しくお願い致します。 現在は、外部からSWFファイルをloadMovieで読み込んでいます。base.swf内のボタン(button01)をロールオーバーすると、イスタント名:kara_movieが入れ替わる簡単な仕組みです。 on (rollOver) { this.kara_movie.loadMovie("001.swf"); } しかし、この状態では別のボタンへロールオーバーしなければ 新たな外部SWFを読み込まない状態となっております。 ロールアウト(rollOut)すると001.swfの再生終了を待って 次の外部SWF(002.swf)を読み込む為にはどうすれば 宜しいでしょうか? また、そのまま003.swf→004.swf…と続いて再生が出来ればと 思っています。 どなたか、お教え頂けましたら幸いです。 以前も、ご指摘頂きましたが文章が分かり難いので 誤解をまねいてしまった事もございました・・・ 見苦しい文章とは思いますが宜しくお願いします。 参考にしているのは下記のURLのサイトのメインのFLASHバナーです。 http://www.konami.co.jp/

  • テキストを画像のように扱いたい

    FlashでテキストフィールドをSpriteにaddchildしてalpha値で縮小/拡大しながら、x/yの座標を移動する処理をactionscriptでやっています。これだとテキストがプルプル動いてしまいます。 たぶん、縮小時などに、テキストのリサイズなどの処理がされるためにプルプル見えるのだと思うのですが、 画像として扱うなど対応方法は無いでしょうか? ※TextFieldAutoSize.LEFT=trueを設定してます。

  • 代替テキストを素早く表示

    画像にロールオーバーした時に出てくる代替テキストの時間を早めることは出来ませんか? マウスオーバーしたら通常だと一瞬間をおいて出ますよね。これをすぐに出したいのですが、htmlのみ(またはjavascript)では実現できませんか?即出ししたければFlashを使わないとダメでしょうか?

    • ベストアンサー
    • HTML
  • ムービークリップをスクロール操作させる方法は?

    createEmptyMovieClip()で作成した空のムービークリップ_mcがあり, このムービークリップ_mcの配下に,createTextField()で作成したテキストエリアやcreateEmptyMovieClip()で作成したボタン等を配置しています. このムービークリップ_mcを,ScrollPaneコンポーネントを適用して,又は別の方法で,スクロール操作できるようにしたいのですが方法が分かりません. ご教授お願います. Flash8:ActionScript2.0

    • ベストアンサー
    • Flash
  • ActionScript3で乱数を取得しなおかつ隣とかぶらない

    ActionScript3で乱数を取得しなおかつ隣とかぶらない 質問ですActionScript3で乱数を取得しなおかつ隣とかぶらないソースをコーディングしているのですが、うまいやり方が見つからず困っています。 いまサンプルとして以下の画像のように2つのテキストエリアとボタンを置いてあります。 それぞれボタンを押すとボタン1ならテキスト1に1~10の数字がランダムにしかも前回と同じ数字がでないように表示されます。ここまでならできるのですが問題は例えばテキスト1に3がでていたらテキスト2には3以外でなおかつ前回と同じ数字がでないようにしたいのです。 何か良い方法はないでようか? ■制作環境:ActionScript3 Flash CS4

    • ベストアンサー
    • Flash

専門家に質問してみよう