• 締切済み

ダイナミックテキストを回転させたい

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

みんなの回答

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

ダイナミックテキストの回転は、#1の方がおっしゃる通り、フォント情報を埋め込んでおくことで利用できるようになります。 ただし、フォントの情報を埋め込むとは、文字1つ1つの情報を、描画ツールで描いた絵と同様に、ベクトルデータの形で記録することです。 日本語全てを埋め込むと、ファイルサイズは2メガ3メガが当たり前の大容量になり、ネットで公開した時のダウンロードはもちろん、ムービーのプレビューやパブリッシュにも時間がかかるようになりますので、ご注意ください。 -------------- 縦書きは静止テキストのみ可能で、ダイナミックテキストでは利用できません。 (「プロパティ」パネルにある、テキストの方向を設定するボタンが、ダイナミックテキストの場合は選択できなくなります) しかし、”ー”や”~”といった文字を利用しない1行のテキストならば、ちょっと工夫すると縦書きのように見せることはできます。 ダイナミックテキストまたはテキスト入力に設定したテキストフィールドは、TextField クラス( Flash MX の場合はオブジェクト)で制御できます。 TextField クラスにはいろいろなプロパティがありますが、そのうちの、テキストフィールドを表示するテキストの長さに応じて自動的に伸縮するかどうかの autoSize 、文字を端で折り返すかどうかの wordWrap を使います。 autoSize はデフォルトでは none (伸縮なし)になっていて、テキストフィールドの大きさを超える長いテキストは表示されないようになっています。 これを true ・ left ・ right ・ center のいずれかにした場合は、表示するテキストの長さによってテキストフィールドの左右が伸縮します。 また、wordWrap プロパティを true にすると、テキストがフィールドの端で折り返されるようになります。 つまり、autoSize を none 以外・wordWrap を true にしておくと、行数に応じてテキストフィールドが下方にも伸張されます。 1行の縦書きのテキストとは、1文字ごとに改行が入った、複数行から成る文字列と考えることができます。 例えば、読み込むテキストに  test=テ%0Aス%0Aト このような形で、最初から改行のコード( %0A または %0D )を挿入しておくのが手っ取り早いのですが、字数が多いと面倒ですし、テキストが見にくくなって管理も大変です。 この点は、ActionScript の String クラスを使って、スクリプトで改行を挿入すると簡単です。 ステージに配置するテキストフィールドは、1文字だけ表示できる大きさで構いません。 先述の通り、autoSize と wordWrap を設定しておくと、あとはテキストの長さに応じて自動的にサイズが変わります。 今回は1行が1文字になりますので、autoSize の設定は left ・ right ・ center のどれでも同じです。ちなみに、true は left と同じ機能です。 例えば、1文字しか表示できないテキストフィールド”txt”がステージにあり、読み込むテキストファイルが test.txt で、test.txt の内容が  test=縦書きのテスト だとします。 このテキストを読み込み、縦書きのように表示するスクリプトは、大体、次のようになります。 このスクリプトはフレームに設定してください。 (各行頭に全角のスペースが入っています。コピーする際はご注意ください)  //テキストフィールドの設定  txt.autoSize = "left";  txt.wordWrap = true;  //テキストの読み込み  System.useCodepage = true;  load_obj = new LoadVars();  load_obj.load( "test.txt" );  //読み込み完了時の処理  load_obj.onLoad = function( success )  {   var temp , char , str , i;   if( success )   {    temp = new String( this.test );    str = new String( "" );    //読み込んだ文字列に、1文字ごとに改行を挿入    for( i = 0; i < temp.length; i++ )    {     //1文字ずつ取り出し、改行を加えて新しい文字列を作る     char = temp.charAt( i );     str = str.concat( char , "\n" );    }    //テキストフィールドに表示    _root.txt.text = str;   }  }; 文字列の操作ですが。 ループを利用して、読み込んだ文字列の先頭から1文字ずつ取り出し、その文字に改行コード( ActionScript では \n )を追加して str という文字列に順に連結します。 str は最初は空っぽですが、ループを繰り返していくうちに、読み込んだ文字列の1文字ごとに改行が挿入された文字列が入っていくという仕組みです。 text はテキストフィールドに表示する文字列を管理しているプロパティで、書き換えると表示する内容を更新することができます。 縦書きの場合はプロポ-ショナルフォントはあまり意味がありません。むしろ、字の幅が不揃いでズレてしまい、見辛くなることもありますので、固定幅フォントのご使用をオススメします。 1つのテキストフィールドには1行しか表示できませんが、複数のテキストフィールドを用意して、1行に表示するテキストを1つずつ変数に分けて同様の要領で表示すると、複数行の縦書き表示も可能かと思います。 ただ、所詮は、本来横書きのものを1行に1文字ずつ表示して、縦書きに見せかけているにすぎません。”ー”や”~”は横向きのままになってしまいますし、小さい字( ぁ ぃ ぅ ぇ ぉ っ ゃ ゅ ょ ゎ)は、字の向きは問題ないものの、レイアウトが少々不自然になりますが、そのあたりはご容赦ください。 あまりスマートとは言えませんけれど、よろしければご参考までに。

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

こんにちわ。 えっと、確認していないので的を射ているかわかりませんが・・・・。 ダイナミックテキストの場合文字の埋め込みをしていないと、たとえば、だんだん薄くしていくといったことは出来ないじゃなかったような気がするのですが・・・。 また、縦書きに関しては、ダイナミックテキストのプロパティの文字の埋め込みを設定するボタンの近くに、縦書き用の設定するボタンがあったような気がするのですが。 widthを1文字分にすると、見える部分が1文字となってしまい他の文字は隠れてしまっているのだと思います。 よって、スクロールさせるような仕組みが必要になりますが、お望みの縦書きとは違った感じになってしまうと思います。 まずは、ダイナミックテキストのプロパティ設定の部分で確認してみてください。

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

関連するQ&A

  • EXCEL2003 テキストボックスの回転 

    EXCEL2003でテキストボックスを使用しています。 テキストボックスを回転させたときに一緒に文字も回転させたいのですが 何か良い方法はないでしょうか?

  • ワードのテキストボックスの中

    テキストボックスに文字を入れました。 文字の配置で横位置は、中央にきましたが 文字を縦位置の中央に配置する方法はありますか?

  • Text Analyzerの文字が回転する

    テキストエディターText Analyzerをインストールしたところ、文字を入力すると左に90度回転されて表記されてしまいます。メニューバーからいろいろな項目をチャレンジしてみましたが、どうにもなりません。どなたか普通の横書き表示に直す方法を教えてください。よろしくお願いします。

  • テキストボックスを回転させたい

    ワードでテキストボックスに入れた文字を回転させたいのですがその方法を教えてください。 メタファイルで保存、コピーしてと言われましたがその方法が よく理解できません。 よろしくお願いいたします。

  • Word テキストボックスで文字を中心に表示する方法

    テキストボックスを作成して、文字を中心(一行のうちの中心ではなく、テキストボックス縦位置の真ん中)に表示したいのですが、どこかにそのようなレイアウト設定は有るのでしょうか? エクセルは配置で横位置・縦位置を選んで中央揃えのような機能が有りました。 同じような表示方法があればお教え下さい。

  • visual basicのテキストボックスについて

    ビジュアルベーシックでカレンダーを作ろうと考えてます。 日付のところをテキストボックスに数字を入れて、カレンダーに見立てようとしています。 でも、そのテキストボックスに値を代入するとき、一つ一つに textbox1.text=1 textbox2.text=2・・・・ と書いていくのはすごくメンドくさく、非効率的です。 今、自分が考えている解決方法は、javascriptにでてくるdocument.forms[0].elements[a].valueのようなテキストボックスなどの名前を指定しなくても値を代入する方法です。 でも、ビジュアルベーシックにこのような操作が可能なのかわかりません。 知っている方がいたら是非教えてください。

  • テキスト入力が180度反転してしまう

    CS2を使用していて、テキスト入力をしようとするとなぜか文字が180度ひっくり返った状態になってしまいます。 入力後イチイチ回転するのは面倒なのですが、治す方法はないのでしょうか? もう一点質問ですが、adobeリーダーで読み込むと横向きで表示されるPDFを読み込むと縦になってしまい、一々回転しないといけません。 もともと横に表示することはできないのでしょうか? それともPDFファイルそのものの問題でしょうか?

  • テキストボックスに変数を表示させたい

    access2003です。 フォーム1にテキスト0を配置し vbaで Private Sub Form_Open(Cancel As Integer) Dim 文字列 As String 文字列 = "a" End Sub と作成しました。 このときフォーム1をダブルクリックして開いた時に テキスト0に文字列に代入した変数を表示させるにはどうすればいいのでしょうか? テキスト0のコントロールソースに =[文字列] とやっても #Name? になってしまいます。 どうすれば読み取った変数をテキスト0に表示させることが可能なのでしょうか? よろしくお願い致します。

  • jpgとテキストボックスを一体化するには?

    Jpgの地図をWord2007に挿入し、その地図に文字をテキストボックスで加えました。次にその地図を伸縮しても、文字は伸縮されません。 テキストボックスを地図と一体化する必要ありそうですが、その方法を教えてください。

  • WORDでのテキストボックスについて

    こんにちわ。 WORD文書を作成しているのですが、テキストボックスを回転させる方法を教えていただけませんか? テキストボックスの文字を90度回転させたいのです。 が、ヨコではなくタテのテキストボックスを使用すると180度回転してしまいます。 どうしたら表示できるのか、教えてください。 よろしくお願いします。