![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
Flashのアクションスクリプトを使い、外部のテキストを読み込ませ、さらにそのテキストをmarqueeタグのように、左から右へ流れるように表示させ、それを繰り返したいです。
以下のページを参考にし、外部テキストを表示するところまでは問題なく出来ました。
http://www.mdn.co.jp/content/view/4566/111/
marqueeのようなスクロールは、ダイナミックテキストをモーショントウィーンでやりました。
ただし、読み込ませる外部テキストの文字数が毎回違います。
それにより、文字数が
1、読み込ませるテキストの文字数が毎回違うため、文字の長さによっては、文字が隠れて表示されない。
2、読み込ませるテキストの文字数が毎回違うため、文字の長さによってモーショントウィーンではうまく繰り返しのタイミングが掴めない。
ということです。
1、はダイナミックテキストで文字数がいなかる場合でもちょうどぴったりテキスト枠のサイズが指定できる方法はないでしょうか?
2、ちょうど読み込んだテキストの最後が消えた時点で、また頭から繰り返すにはどうすればよいでしょうか?
環境は、
Windows Vista
Flash Pro 8
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
cnkozoさん、
外部data.textは、今までのを使うとします。
以下で、左にメッセージが隠れたら、次のメッセージに変わり、ループします。
順番は、ロード時に、毎回変化しますが、一度ロードされた後は、変化しません。
//ここから
var max:Number;//メッセージの数
mc._txt.text = "";//インスタンス名 _txtをMovieClip化し、ステージ上でのインスタンス名を、mcとする。ロード時は、ブランク
mc._x = 20;//ステージより、少し、右寄りに配置
var n:Number = 0;//mess_array[n]、即ち、配列要素番号をnとし、初期値は、0とする
var mess_array:Array = new Array();//配列定義
//System.useCodepage = true;//data.txtのコードが、UTF-8で記載されてない場合は、これが必要
var lv:LoadVars = new LoadVars();
lv.onLoad = function():Void {
max = Number(this.kazu);//文字列の数値化
for (var i:Number = 0; i<max; i++) {
mess_array[i] = this["mess"+i];
}
Shuffle(mess_array);//下のカスタム関数 Shuffle()を動かし、mess_arrayをShuffle
trace(mess_array);
Move(mc);//mcを引数として、下のカスタム関数 Move(targt_mc)を始動させる
};
lv.load("data.txt");
//lv.load("data.txt?"+getTimer());//サーバーアップ時は、ブラウザーのキャッシュ対策として、こちらを使用する。ローカルでは、エラー発生
//左に動かす関数を、カスタム関数化し、引数を、target_mcとする
function Move(target_mc:MovieClip) {
target_mc._txt.text = mess_array[n];//最初は、n=0が入り、左に隠れたら、n=1,2,3,4,0,1,2,3,4,0・・・・・となる
target_mc._txt.autoSize = "left";
w_txt.text = "_txtサイズ="+target_mc._txt.textWidth;
var speed:Number = 3;
target_mc.onEnterFrame = function():Void {
this._x -= speed;//左へ移動
if (this._x<(-this._width)) {//mcがステージの左に完全に隠れたら、
n++;//カウントアップし、
if (n>=max) {//max以上になったなら、
n = 0;//カウンターを元に、戻す
}
Move(this);//カスタム関数を、ここで、実行させる
this._x = Stage.width;//ステージの幅に、mcの基準点を戻す
}
};
trace("n= "+n);
}
//配列を、Shuffleする関数を、カスタマ関数化して、見易くしておく
function Shuffle(_array:Array) {
var num:Number = _array.length;
for (var i:Number = 0; i<num; i++) {
var r:Number = Math.floor(Math.random()*num);// ランダムなindexを取得
// i とランダムなindexの中身を入れ替え
var t:Number = _array[r];
_array[r] = _array[i];
_array[i] = t;
}
}
//ここまで
となります。
この回答への補足
joy_28様
お礼が遅くなり、失礼いたしました。
本職の方とお見受けしました。本当に最後まで手取り足取りありがとうございました。
私にできるのはお礼をここで申し上げることくらいしか出来ません。
本当にお会いして直接お礼を申し上げたいところです。
私も詳しくなったら他の人に教えられるようになりたいです。
本当にお世話になりました。
No.2
- 回答日時:
cnkozoさん、
mc._txt.text = "";//インスタンス名 _txtをMovieClip化し、ステージ上でのインスタンス名を、mcとする。ロード時は、ブランク
→
ここが、出来てないからだと、推測します。
インスタン名 _txtをステージに配置しただけでは、動きませんから、これを、MovieClip化します。
その上で、ステージ上での、インスタンス名をmcと名付けてください。
結果、mcの中に、_txtが内包される形になりますから、_txtへのパスは、
ドット演算子を使って、
mc._txt.textというようになります。
この作業を省略すると、動きませんので、再チェック下さい。
この回答への補足
何度もありがとうございます。
読解力がなくて申し訳ございませんでした。
今回おっしゃるように設定し、無事成功しました。
本当にありがとうございました。
ここまで来てお礼したいのですが、もう一つだけわがままをお許し下さい。
今の場合だと、文字の切り替えは更新した場合になりますが、可能なら、文字が左に行って、消えたら、次に右から出てくる文字を毎回ランダムに切り替えるようにしたいです。
本当にすみません。なにとぞよろしくお願いいたします。
No.1
- 回答日時:
cnkozoさん、
AS2.0の例です。
・外部data.txt:其々、長さを変化させる
&mess0=1番目のmess&
&mess1=2番目のメッセージです&
&mess2=3番目のメッセージと意見です。&
&mess3=4番目&
&mess4=5番目のMessageと意見とその事例です&
&kazu=5&
・FLA側
//ここから
var max:Number;//メッセージの数
mc._txt.text = "";//インスタンス名 _txtをMovieClip化し、ステージ上でのインスタンス名を、mcとする。ロード時は、ブランク
var mess_array:Array = new Array();//配列定義
System.useCodepage = true;//data.txtのコードが、UTF-8で記載されてない場合は、これが必要
var lv:LoadVars = new LoadVars();
lv.onLoad = function():Void {
max=Number(this.kazu);//文字列の数値化
for (var i:Number = 0; i<max; i++) {
mess_array[i] = this["mess"+i];
}
var r:Number = Math.floor(Math.random()*max);//0から4までの乱数発生
trace(r);
mc._txt.text = mess_array[r];//r番目の配列要素を取り出して、mcに入れ子になった、ダイナミックテキスト _txtに代入
mc._txt.autoSize="left";//左基準で、サイズの自動調整を行い、
w_txt.text=mc._txt.textWidth;//その時の_txtサイズ、すなわち、mcの幅を取得し、参考に、w_txt.textに表示、必須ではない
Move(mc);//カスタム関数を、mcを引数に実施
};
lv.load("data.txt");
//lv.load("data.txt?"+getTimer());//サーバーアップ時は、ブラウザーのキャッシュ対策として、こちらを使用する。ローカルでは、エラー発生
function Move(target_mc:MovieClip){//ごちゃごちゃするので、外出しで、カスタム関数化し、引数を、target_mcとする
var speed:Number=3;
target_mc.onEnterFrame=function():Void{
this._x-=speed;//左へ移動
if(this._x < -this._width) {//mcがステージの左に完全に隠れたら、
this._x = Stage.width;//ステージの幅に、mcの基準点を戻す
}
}
}
//ここまで
となります。
この回答への補足
http://okwave.jp/qa5449549.html
で質問した者です。
こちらにもご回答頂き、ありがとうございました。
また、返事が遅くなり、すみませんでした。
http://okwave.jp/qa5449549.html
ではうまくいったのですが、今回のはうまくいきませんでした。
swfを書き出し、swfを開くと何も表示されません。
ダイナミックテキストを置いた場所にカーソルを持って行くと、テキスト選択になるので、何んらかのミス?があったのだと思います。
ダイナミックテキストのインスタンス名は「_txt」としました。
再度アドバイス頂けましたら幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PDF PDFの出力時のファイル名を消したい 3 2022/09/05 01:16
- FC2ブログ テキスト版からURLも表示できるように設定できないのでしょうか。 ブログにURLを載せようとしたら文 2 2023/02/12 11:20
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- Evernote Evernote(エバーノート)の文字化け 1 2022/04/05 19:30
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- JavaScript 空白で入力フォームのボタンをクリックしたら、ブラウザの上部からjavascriptで 表示されるアラ 1 2022/05/20 11:16
- 物理学 量子力学のテキストのフーリエ変換の記述について 1 2022/10/16 17:00
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- 簿記検定・漢字検定・秘書検定 簿記3級を独学で勉強した人に質問です。 どうやって勉強しましたか?私は今独学で勉強中ですが、なかなか 3 2023/01/25 00:01
- その他(悩み相談・人生相談) 流暢に話すテキスト読み上げアプリ 1 2023/07/23 20:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
flash (.swf) を編集したい
-
私のコンピューター上のファイ...
-
スマホでサイトの画像を長押し→...
-
potplayerについて質問です
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
Flashplayerの運用について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ムービークリップ変換について...
-
画像表示をアルファでフェード...
-
ActionScript スクロールメニュー
-
何で重なり合おうとするんでし...
-
for文を使ったボタン
-
ステージにある複数のインスタ...
-
FLASH 定型のASを登録しといて...
-
addChildの使い方
-
外部テキスト読み込みでマーキ...
-
AS3の配列の中にアクセス
-
関数を停止するには。。。。
-
配列に入れたムービークリップ...
-
○秒間実行 AS3
-
Actionscript3.0のクラス定義の...
-
Actionscript3.0 子のイベント...
-
actionscript3.0 オブジェクト...
-
actionscript3.0 データ型について
-
as3 addEventListenerの動的な...
-
複数mcのランダム再生とmc指定...
-
photoshopで書いた四角の枠の中...
おすすめ情報