• 締切済み

ActionScriptで動的にテキストを分解したい

ActionScriptで動的にテキストを分解する方法はあるのでしょうか。 外部テキストを読み込み、回転させたり、ドロップシャドウを適用したいのですが・・ 他の方の同様な質問・回答で、 「画像に変換された文字と外部テキストを比較する方法」 「文字をあらかじめ埋め込んでおく方法」 が記載されていて、参考になったのですが、 テキストを分解する方法については未記載でした。 ・・やっぱり無理なのかなぁ・・ ずばり! お答えお願いします。 できるかできないかハッキリするだけでもかなりスッキリすると思います(苦笑) 宜しくお願いします。

みんなの回答

  • DPE
  • ベストアンサー率85% (666/776)
回答No.3

ダイナミックテキストを分解するのは無理ですが、読み込んだテキストに回転・フィルタをかけて表示することは、Flash Player 8 から使えるようになったBitmapData オブジェクトを利用すると可能です。 ただし、ビットマップ扱いになるので、回転の際にドットが汚く見える点についてはご容赦ください。 次のように考えます。 テキストを読み込んで仮に表示するためのムービークリップを作ります。 これは、ムービークリップの中にダイナミックテキストのテキストフィールドを配置したシンボルとして作ります。 このシンボルを”作業用ムービークリップ”とします。 作業用ムービークリップのインスタンスを配置し、「フィルタ」パネルでフィルタの設定を行います。 すると、テキストフィールドに表示される文字1つ1つにフィルタがかかるようになります。 外部テキストファイルから読み込んだテキストは、このムービークリップのテキストフィールドに表示してください。 作業用のムービークリップ内のテキストフィールドはあくまでもダイナミックテキストですから、回転はできません。 そこで、先のムービークリップの絵を BitmapData オブジェクトに取り込み、別のムービークリップに表示します。 コピー元の絵は不要でしょうから、_visible プロパティを false にして非表示にしておきます。 BitmapData オブジェクトに取り込んだものは、テキストの属性が失われて普通の絵になっています。 あとはムービークリップを回転させる要領で _rotation プロパティを書き換えると、いくらでも回転させることができます。 ----------------------------------------------------------------- 作り方の一例です。 ムービークリップシンボルを作り、シンボル内に”ダイナミックテキスト”に設定したテキストフィールドを配置してインスタンス名を付けてください。 仮に” disp ”と付けたとします。 テキストの色・フォントの設定などは、シンボルを作る時点で済ませておくと楽です。 テキストフィールドの境界線と背景は”なし”にしてください。境界線・背景があると、テキストではなくテキストフィールドそのものにフィルタが適用されてしまいます。 できたムービークリップシンボルのインスタンスをステージに配置し、これにもインスタンス名を付けてください。 ここでは” temp_clip ”とします。 temp_clip を選択した状態で、「フィルタ」パネルでフィルタの設定をしてください。 ドロップシャドウだけでなく、他のフィルタを利用することもできます。 以上で準備は完了です。 次はスクリプトを書きます。 ***************************** スクリプトのサンプルです。 このスクリプトは、メインのタイムラインに設定してください。 なお、読み込むテキストファイルの内容は  sample=サンプル:Test12345 とします。 外部テキストファイルを読み込む方法の詳細は今回は本題ではありませんので、ここでは割愛させていただきます。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)  //作業用テキストフィールドの初期設定  //複数行・折り返しあり・自動伸縮あり・境界線/背景なし  with( temp_clip )  {   disp.multiline = true;   disp.wordWrap = true;   disp.autoSize = "left";   disp.border = false;   disp.background = false;  }  //表示用のムービークリップを作成し、(10,50)の位置に配置する  this.createEmptyMovieClip( "disp_clip" , 0 );  disp_clip._x = 10;  disp_clip._y = 50;  //外部テキストファイルをShift-JISで読み込む  System.useCodepage = true;  load_obj = new LoadVars();  load_obj.onLoad = function( success:Boolean )  {   if( success )   {    //作業用のムービークリップ内にテキストを表示    temp_clip.disp.text = load_obj.sample;    //BitmapDataオブジェクトを作成    //作業用ムービークリップと同じ大きさで、透過あり    bmp_obj = new flash.display.BitmapData( temp_clip._width , temp_clip._height , true );    //作業用ムービークリップの絵を取り込む    bmp_obj.draw( temp_clip );    //この内容を表示用ムービークリップに表示    disp_clip.attachBitmap( bmp_obj , 0 );    //作業用ムービークリップを非表示にする    temp_clip._visible = false;   }  };  load_obj.load( "○○○.txt" ); BitmapData オブジェクトに取り込んだ絵のデータは、単にメモリの中にデータとして存在しているだけです。 表示するにはムービークリップが必要です。 上記の作例では createEmptyMovieClip で空っぽのムービークリップを作って表示していますが、空のムービークリップシンボルを作ってステージに配置しておいても同じです。 回転の処理はありませんけれど、例えばボタンシンボルのインスタンス” btn ”を配置して  btn.onRelease = function()  {   disp_clip._rotation += 10;  }; というようなスクリプトを追加してみてください。 ボタンをクリックするたびに、読み込んだテキストをもとに作った画像が回転します。 ***************************** ダイナミックテキストでは、一般的にはデバイスフォントを使用するかと思います。 デバイスフォントは普通はアンチエイリアスがかからない(閲覧者のOSや設定によってはかかることもありますが、Flash からは制御できません)ため、文字はどうしてもギザギザが目立ちます。 おまけに、ムービークリップで表示する時はベクトルデータではなくビットマップデータになっているので、回転させると余計に汚く見えます。 ドロップシャドウフィルタをかけると、フィルタ適用後の画像はテキストフィールドよりも少し大きくなります。 上記のスクリプトでは BitmapData オブジェクトは作業用のムービークリップの大きさ(つまりはテキストフィールドと同じ大きさ)しか確保していませんので、テキストフィールドとテキストの長さ・フィルタの設定によっては、できた画像の下端が欠けて見える場合があります。 また、BitmapData を使う時はメモリの使いすぎに注意しましょう。 BitmapData オブジェクトは大きさの制限がありますので、極端に大きいものには適用できません。 不要になったものは明示的に削除してください。 ・・・まあ、いろいろと粗も目立つ方法ですけれど、それでもよろしければご参考になさってください。

halchion
質問者

補足

有難うございます!! 本日は時間があるので、早速試してみようと思います 無理かなぁと思っていても工夫しだいで実現できちゃったりする(多少妥協はあっても)のが、Flashのスゴイところだと思います。 パズルを解いているみたいで面白いですね。 また後ほど報告を書き込みに来ます^^

全文を見る
すると、全ての回答が全文表示されます。
noname#35109
noname#35109
回答No.2

スバリ,無理です。 Flash 8 でも無理ですし, Flash 9 でも,10でも… 将来にわたっておそらく同じ事です。 テキストの分解は, Flash オーサリング時において, オーサリング環境にインストールされているフォントに関して, オーサリングツールによってできることです。 何か人民の人民による人民のための… みたいですが, そういうことです。

halchion
質問者

お礼

ありがとうございました! スッキリしました(笑) 本件以外にも色々と実験、調査してみた結果、 Flashでできること、できないことの境界が少~しずつ明らかになってきました。。 あんまりなんでも実現できすぎると、それだけソースも複雑になるでしょうし、 とっつきにくさもあってここまで普及しなかったかもしれませんね。 ある程度複雑な動作を仕込みたい場合は、他言語と連携させたり、 Flash以外の技術を利用することも考えたほうがいいかもしれませんね。。

halchion
質問者

補足

「ActionScriptによるテキストの動的な回転やエフェクト付加」の代替案・・ ダメもとでもう少しだけお待ちします。。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

『ダイナミックテキストをムービーとしてあつかえるか?』 ということでしょうか? 仰るとおり、テキストプロパティから埋め込みをすれば可能です。 ちなみにFlashの基本機能にドロップシャドウはありません。

halchion
質問者

補足

早速のご回答ありがとうございます!! >『ダイナミックテキストをムービーとしてあつかえるか?』 そうですね。そういうことでもあります。 埋め込みはかなり重くなるのでできれば避けたいんですよね^^; ちなみに、Flashはバージョン8のprofessionalなので、「フィルタ」でドロップシャドウが使えます。 ActionScriptでも、flash.filtersというクラスにドロップシャドウ含めた各フィルタメソッドがありますね~。 *************************** 質問時に環境を載せるのを忘れていました。すみません。 Frash8 professional Actionscript2.0 ***************************

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ActionScriptからのテキスト操作

    FlashMXをWindowsで使用しています。 テキストフィールドのインスタンス(文字)を ActionScriptで縁取りしたいのですが、 どなたかわかる方、ご教授くださいませ。 テキストを分解して、インクボトルツールで、 手作業で縁取りすることはできるのですが、 この効果をActionScriptで実現したいのです。 調べたところ、ユニクロのサイトで、 テキストフィールドの値を入力し、 動的に縁取りを生成しているんです。 ※ちなみに、これがそのユニクロのサイトのFLASHです。 http://www.uniqlo-tw.com/order/index.html スッテプ申込へ -> 次のステップへ -> デザインパターンでつくる んー、どうやってやっているんでしょう・・・。

    • ベストアンサー
    • Flash
  • actionscript3.0でのテキスト表示

    お世話になります。 現在、actionscript3.0でテキストを一文字づつ表示させるように設定しています。 テキストの表示まではできたのですが、テキストを表示させたまま、止めることができず試行錯誤しております。 下記スクリプトをご覧いただき、お解りになりましたら、ご教授ください。 宜しくお願いします。 var asuStr2:String = "テキスト文字テキスト文字テキスト文字"; asu_txt2.autoSize = TextFieldAutoSize.LEFT; this.addEventListener(Event.ENTER_FRAME, setEnter2); function setEnter2(e:Event):void{ asuFunc2(); } function asuFunc2():void{ if(asuStr2.length > 0){ asu_txt2.appendText(asuStr2.substr(0, 1)); asuStr2 = asuStr2.slice(1, asuStr2.length); } else { this.removeEventListener(Event.ENTER_FRAME, setEnter2); } } 上記スクリプトはharayu様のサイトを参考にさせていただきました。 勝手ではございますが、ありがとうございました。

    • ベストアンサー
    • Flash
  • illustratorで画像のようなテキストを……

    illustrator CS5を使っています。 テキストを縁取りする方法はわかるのですが、添付画像(上)のように、右下の方の縁を太くして、テキストを立体的に見せるにはどうすればよいでしょうか? できればテキストをアウトライン化せずにこのような加工をしたいのですが、できますか? ドロップシャドウを使ってみたのですが、文字の縁とシャドウに段差ができてしまい(添付画像下)、きれいになりません。 角を丸くきれいに見せたいんです……。 どなたか教えてください。 (イラレ初心者なので、お手やわらかにお願いします><)

  • ActionScript3.0リンク先URLの管理について

    ActionScript3.0を用いて、クリックするとリンク先へ飛ぶMCを作成しました。このリンク先URLを外部テキストで管理したい(外部テキストに記載されているURLを書きかえるだけでリンク先が変更できるように)のですが、できますか? できるならばやり方を教えて頂けないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • Flashのactionscriptについて

    FlashMXを使っています。それで、変数名をつけたダイナミックテキストに 文字を外部テキストファイルから呼び出そうとしました。 まずダイナミックテキストをムービークリップにして、 actionscriptをこう記述しました。 onClipEvent(load) { this.loadVariables("test.txt") ; } test.txtは呼び出すファイルの名前です。 で、テキストの方は、textbox=代入する文でやりました。(textboxは ダイナミックテキストの変数名) そしていざ出力してみると、文字化けしてしまいます。なぜでしょうか?

  • ダイナミックテキスト

    ActionScriptでドラッグ&ドロップして動くウィンドウを作ったのですが、そのウィンドウの中に「ドラッグ中・・・」とダイナミックテキストで書き出して実際、ドラッグしたときに「ドラッグ中・・・」の文字が点滅するようにしたいのですが、どのようにやるうのかわかりません。自分でもやったのですが、うまく指定ができてないみたいで… すみませんが、教えて頂ければ幸いです。 宜しくお願いします。

  • ダイナミックテキストのボタン化

    いつもお世話になっております。 actionscript3.0でサイト制作を行なっております。 予めFLASH上で作成したダイナミックテキストフィールドに、 外部ファイルから読み込んだテキストを入れ、それをボタン(指マーク) にしたいと考えております。 テキストフィールドの為、useHandCursolやbuttonMode等のプロパティは 使えないと思いますので、予め作成したダイナミックテキストフィールドと 同じ大きさの透明なSPRITEをテキストフィールドの上に乗せておき、 それをbuttonMode = trueの処理でリンクとして扱う方法を考えましたが、 少々面倒だと感じました。 上記の方法以外にactionscript上で、ダイナミックテキストをボタンとして 変換するような方法は御座いますでしょうか? 宜しくお願い致します。

  • ダイナミックテキストの幅を広げるには?

    ダイナミックテキストに外部から読み込んだ文字を表示させているのですが、 読み込んだ文字がフィールドに全て入らなかった場合にダイナミックテキストの表示幅をActionScriptを使用して変更する事は可能でしょうか? 例えば20文字程度が表示できるテキストフィールドに30文字の文字列を表示させたい場合、テキストフィールドのサイズを広げたいのです。 最初から30にすればいいのではと思うかもしれませんが、構造上それは避けたいです。 良い方法を御存知の方がいらっしゃいましたらアドバイスをお願い致します。

    • ベストアンサー
    • Flash
  • ダイナミックテキストを回転させたい

    ダイナミックテキストに対して、 伸縮や回転をしてしまうと文字が表示されなくなってしまいます。 ダイナミックテキストを90度回転させることは可能でしょうか? 私なりの解決策としては、 全文字のグラフィックを用意し読み込んだ文字と比較し、 一致するグラフィックを配置して伸縮・回転させる方法しか思いつきませんでした。 この方法は、数値やアルファベットだけであれば可能かもしれませんが 全角文字を回転させたいため無理があります(^-^; もう一つ質問です。 ダイナミックテキストの文字を縦に表示したいのですが、 ダイナミックテキストのwidthを1文字分のサイズにし 値を代入してみましたが最初の1文字しか表示されません。 縦に表示する方法はないでしょうか? こちらの解決策は、charAtで1文字ずつ区切り 区切った数だけダイナミックテキストを配置し、 区切った値を代入していく方法しか思いつきませんでした。 スマートな解決策がありましたら教えてくださいm(__)m

  • イラストレーターでドロップシャドウをかけた文字を画像の上に乗せるとシャ

    イラストレーターでドロップシャドウをかけた文字を画像の上に乗せるとシャドウだけが画像の下に入りこまっています。 レイヤーは画像を下にして、上にテキストを重ねています。 ドロップシャドウをかけたテキストも画像の上に乗っけていないときはシャドウがかかっているのですが、画像の上にもってくると文字は乗っかっているのですが、シャドウだけ画像の下に隠れてしまいます。 どうしたらいいのでしょうか。