• ベストアンサー

ページ番号をつけたい

Flash8pro windowsの環境です。 ページ物のデータを作っています、 1ファイルが50数ページ(フレーム)になってフレームが1つ増えるたびに本で言えば、1頁めくるといった感じです。 全55ページだとして、1/55、2/55といった風に記すことは、どのようにするのでしょうか? ページ(フレーム)めくりは、メインタイムラインにあるplate_mcに入れ子にしたprev_btn,next_btnを設定してあり、それを押すと、前後するようになっています。どうぞよろしくお願いします。

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

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

基本的によくわからないご質問だと思います。 普通は1ページ1ページ,テキストを手で打つと思いますし, 55ページでも555ページでも,それくらいであれば,考えたり質問するより早く打ててしまいまうと思うのですが。 よくわかりませんが, ActionScript によって全自動でしたいということなのでしょうか? 一応 コピー&ペースト するだけで,全自動でページ数を振るスクリプトを考えてみました。 しかし,手作業ですることを ActionScript にさせているようなものです↓。 ----------------------------------------------- // ---_root の フレーム1 に書くスクリプト--- // ストップ(すでに書いてあれば不要) stop(); // TextFormatクラスのインスタンス page_fmt を作成 page_fmt = new TextFormat(); // 文字のサイズを指定 page_fmt.size = 24; // // _root の深度 0 に空のムービークリップ page_mc を作成する _root.createEmptyMovieClip("page_mc", 0); // page_mc の中にテキストフィールド page_txt を作成する _root.page_mc.createTextField("page_txt", 0, 0, 0, 0, 0); // テキストの色を指定(現在 0x0000FF は青) _root.page_mc.page_txt.textColor = 0x0000FF; _root.page_mc.page_txt.autoSize = "left"; // // 随時更新(本当はボタンのクリックで動作させる方がベター) _root.page_mc.onEnterFrame = function() { // page_txt に _root の 現在フレーム/全フレーム数 を表示 ★1 this.page_txt.text = _root._currentframe+"/"+_root._totalframes; // page_fmt のフォーマットを適用 this.page_txt.setTextFormat(page_fmt); // 表示座標の更新 ★2 this._x = Stage.width/2-this._width/2; this._y = Stage.height-50; }; ----------------------------------------------- ★1 について。 本題はこの ★1 の 1行 だけです。  _root._currentframe+"/"+_root._totalframes  _root(親元の根)._current(現時の)frame(フレーム)             +        "/" (文字列の / スラッシュ)             +  _root(親元の根)._total(全体の)frames(フレーム数) _root._currentframe は数値,"/" は文字列,_root._totalframes は数値です。 したがって 数値+文字列+数値 → 文字列 になります。 この文字列を任意のテキストフィールドに表示させれば良いわけです。 それ以外の行は, テキストフィールドを作成したり,色やサイズなどを決めたり,随時表示が変わるようなしくみにしてあるだけのものです。 ★2 について。 どこにページ数を表示させれば良いのかわからないため, 上記のスクリプトでは, 勝手にページ(ステージ)中央の下の方のにページ数を表示させるようにしています。 場所は適当に計算して考えてください。 ページによって場所を変えたいとか色を変えたいとかはナシです。 そういうことをするのでしたら,手で打った方が早いと思います。

coucha
質問者

お礼

ありがとうございました。 ★1の指示で表示されました。 まだ、flashをはじめたばかりで、コピー&ペーストで手動で・・・って思っていたんですが、50数ページのファイルを50以上作らねばならず、スクリプトで出来れば、その今のページ(フレーム)だけでも入力しなくてもと考え質問させていただきました。 色の指定や、フォントサイズの指定もスクリプトでする場合の方法も知識として知ることができました。 非常に助かりました。ありがとうございます。

coucha
質問者

補足

BlurFiltan様が教えていただいた方法でいったんは、思い通りの動きをしてくれたのですが・・・その後の状況です。 実は、最初に1ファイル、50数ページの本のようなものを作成していると説明させて頂きましたが、その50数ページの本が、50ファイルあり・・・つまり、実際の本で例えると、50数ページの本が50巻あり、その表紙となるフラッシュファイルmain.flaがあり、メインのタイトルページ、50巻各ファイル(swf)に飛ぶ、50個のボタンがあり、それらを呼び込む空のmc(main_mc)を置き、50個のボタンでユーザーが見たいボタンを押すと、その希望されたswfがloadMovieされる仕組みになっており、main.flaは、メインタイトルのページ、ボタンのページ、「はじめに」「終わりに」「このソフトの使い方」など5ページ(5フレーム)から成っております。 ロードすると、ロードされるswfで教えていただいたようにスクリプトを書き、1/55、2/55・・・と成っている物が、main.flaが5ページ(5フレーム)からなっているので、1/5と変わってしまい、ロードされているswfが何ページ有ろうと、全頁1/5の表記になってしまいます。BlurFiltanがおっしゃるように、手動でテキストデータで1/55、2/55とすればよいのかもしれませんが、その辺をスクリプトで規制する方法はないのでしょうか? また、第2の質問になってしまいますが、頁をめくるのに、最初にご説明させていただいたように、ロードされる50種のファイル(aa.swf,bb.swf, など50種)も、main.flaも頁をめくるのに、next_btn,prev_btnなど入れ子にしてあるボタンを置いていますが、そこを押さずに「→」「←」のキーを押せば、めくれるようになっています。aa.swf,bb.swfをロードした際に、prev,nextのボタンを押せば、問題なくロードしてもめくれるのですが(フレーム移動する)キー操作では、ロードした後にフレーム移動しません。キー操作の疑問について改めて別枠でご質問いたせばよいのかもしれませんが、連動した疑問でしたのでこの場でご質問させて頂きました。つたない説明で解りにくい点も多いかと思いますが、どうぞご教授下さい。

関連するQ&A

専門家に質問してみよう