• ベストアンサー

外部画像をMCの真ん中に表示する。

htmlから変数をもらって外部テキストと画像を表示させています。 自分でもいろいろ探したのですが、 ステージの真ん中にもっていくことや、画像のサイズを合わせることは出来たのですが jpgを読み込むmcの真ん中に表示することに関しては探しきれませんでした。 抜きの画像でバックは透明、高さは合わせられるのですが幅は無理なのです。 どなたかご存知の方教えて頂けないでしょうか? おそらく、onClipEvent (load)で指定するのだろうと考えてはいるのですが・・・。 宜しくお願いします。

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

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

外部画像をMCの真ん中に表示するというのは次のようなことですか?  MC↓  □□□□□□□□□□  □□□□□□□□□□  □□□□□□□□□□  □□□□□□□□□□  □□□□□□□□□□  外部画像(JPEG)↓  ■■■■■■  ■■■■■■  ■■■■■■  外部画像をMCの真ん中に表示↓  □□□□□□□□□□  □□■■■■■■□□  □□■■■■■■□□  □□■■■■■■□□  □□□□□□□□□□ これだと, 少なくとももう1つムービークリップが必要です。 外部画像を表示するムービークリップを 親と子の入れ子二重構造にして, 子ムービークリップに画像をロードして, 親ムービークリップの真ん中に持ってくるという方法です。 この方法を使うとしても, さらにいくつかの手段がありますが, どの手段を使えば良いかは作者やバージョンによって変わります。 ◎手段1 ================== Flash MX 2004 以上(MX2004,8,CS3)をお持ちで, 楽に済ませるなら次のようにすれば良いと思います。 新規ドキュメントを作成し, まずステージ上に外部JPEGより大きな塗りの長方形を矩形ツールで描きます。 塗りの色が不要である場合は透明な色の塗りの長方形を描きます。 その塗りの長方形を選択して, 「シンボルに変換」でムービークリップに変換するのですが, このとき「基準点」に注意して変換します。 「基準点」を 「中央(縦横とも真ん中)」 にして「OK」します。 そして, そのムービークリップを選択して,インスタンス名を付けます。 一応 「oya_mc」 というインスタンス名を付けたとしておきます。 次に, _root のレイヤーを1つ追加して, その新しいレイヤーのフレーム1に次のようなスクリプトを書きます。 --------------------------------------- // 親の中に子ムービークリップ「ko_mc」を作成 _root.oya_mc.createEmptyMovieClip("ko_mc", 0); // MovieClipLoaderクラスのインスタンス MCL を作成 MCL = new MovieClipLoader(); // ロード監視用のインスタンス OBJ を作成 OBJ = new Object(); // 画像がロードされたときの動作を定義 OBJ.onLoadInit = function(myTarget) { myTarget._x = -myTarget._width/2; myTarget._y = -myTarget._height/2; }; // MCLのリスナーオブジェクトとしてOBJを登録 MCL.addListener(OBJ); // gaibu.jpg を 子ムービークリップ にロード MCL.loadClip("gaibu.jpg", _root.oya_mc.ko_mc); --------------------------------------- これで出来上がりです。 外部画像「gaibu.jpg」をSWFと同じフォルダにでも保存すれば, 自動的に「gaibu.jpg」が「oya_mc」の真ん中に表示されるものができます。 ◎手段2 ================== > おそらく、onClipEvent (load)で指定するのだろうと > 考えてはいるのですが・・・。 それで行きますか? その場合はActionScriptは簡単になりますが, 手動で作成する部分が増えて, さらにActionScriptを書く場所が少なくとも2箇所以上に分散しています。 この方法も書いておきますと, 上の ◎手段1 で書いたように, 塗りの長方形を「基準点」を 「中央(縦横とも真ん中)」 にしてムービークリップに変換し, 「oya_mc」 というインスタンス名を付けるところまでは同じです。 その 「oya_mc」 をダブルクリックして,「oya_mc」 内のタイムラインの編集に入ります。 「oya_mc」 内の任意の場所(ステージ外でもどこでも良いです)に, 極小さな,または空(カラ)のムービークリップを作成します。 そしてそのムービークリップにインスタンス名を付けます。 一応 「ko_mc」 というインスタンス名付けたとしておきます。 その 「ko_mc」 を選択して, 「ko_mc」 自体に次のように書きます。 ----------------------------- onClipEvent (load) { this._x = -this._width/2; this._y = -this._height/2; } ----------------------------- そして _root のタイムラインの編集に戻って, _root にレイヤーを1つ追加して, その新しいレイヤーのフレーム1に次のようなスクリプトを書きます。 ------------------------------------ // 親の中に子ムービークリップ「ko_mc」に // gaibu.jpg をロード _root.oya_mc.ko_mc.loadMovie("gaibu.jpg"); ------------------------------------ 階層構造で書いてまとめると次のようになるということです。  _root ←loadMovie を書く   └oya_mc ←基準点中央      └ ko_mc ←onClipEvent (load) を書く これで出来上がりです。 外部画像「gaibu.jpg」をSWFと同じフォルダにでも保存すれば, 自動的に「gaibu.jpg」が「oya_mc」の真ん中に表示されるものができます。 この ◎手段2 のスクリプトは, Flash 5 でも(5,MX,MX2004,8,CS3)使用可能です。 また, ◎手段1,◎手段2 ともに 使用しているスクリプトのバージョンは ActionScript1.0 です。  --- --- --- --- --- ◎手段1 にしても ◎手段2 にしても, ムービークリップを親子の入れ子にすることがまず大切です。 あと,スクリプト(計算式)を簡単にするには, 親のムービークリップの基準点を「中央」にするということです。

a-kira1966
質問者

お礼

早速のご回答ありがとうございます。 BlurFiltanさんの回答は丁寧で分かりやすくいつも見て参考にさせて頂いております。 環境と補足をさせて頂きます。 OSはXPのSP2 Flash 8です。 700x600のステージにimage_boxとtxt_boxというMCがあり、それぞれ外部から変数をもらって表示するようになっています。 トータル120フレームの80フレーム目に読み込ませるように actionレイヤーの80フレームに if (this.image_box == Number(this.image_box)) { loadMovieNum("../image/gazou/"+_root.hensuu+".gif", this.image_box); } else { this.image_box.loadMovie("../image/gazou/"+_root.hensuu+".gif"); } と書いて、 MCに onClipEvent (load) で座標を指示出来ればと考えたわけです。 参考にしたスクリプトはステージの真ん中に配置するもので下記のようになります。 // このムービークリップが読み込まれたとき onClipEvent (load) { // 高さの指定(※可変) var my_h = 200; // 位置の指定(※可変) var my_x = Stage.width/2; var my_y = Stage.height/2; // // サイズの変更 this._width = my_h*this._width/this._height; this._height = my_h; // 座標の移動 // この MC を「指定位置 - MCの幅の半分」に移動 this._x = my_x-(this._width/2); // この MC を「指定位置 - MCの高さの半分」に移動 this._y = my_y-(this._height/2); } これをいじっていて行き詰まってしまいました。 この場合は、image_boxにko_mcを入れ子にするという解釈でよいのですね。 "ムービークリップを親子の入れ子にする" "基準点を「中央」"を守ってチャレンジしたいと思います。 絵のほうから入ったのでスクリプトは全くの初心者です。 また質問することがあるかと思いますが宜しくお願い致します。 ひとつ質問なのですが、"空(カラ)のムービークリップ"というのはどういう状態?のものなのでしょうか。

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

その他の回答 (1)

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

> 絵のほうから入ったのでスクリプトは全くの初心者です。 私も絵のほうから入った者です。 今でも絵の方が専門(本職に近い)存在です。 ですから, 「絵を描いてモーショントゥイーンで動かす。」 「複雑に動作を絡ませるときは, ムービークリップの入れ子状態を手動で作成して複雑な動きをさせる。」 というのが基本路線です。 > ひとつ質問なのですが、"空(カラ)のムービークリップ"というのはどういう状態?のものなのでしょうか。 ステージ上に何でも良いので塗りまたは線を描いて, ムービークリップに変換し, そのムービークリップをダブルクリックして, ムービークリップ内の編集に入り, 最初に書いた塗りまたは線を削除すると, 空のムービークリップができます。 その空のムービークリップが存在する親のタイムラインの編集に戻ると, 空のムービークリップは ○ みたいな状態になって, 中心点の位置だけを確認することができます。 ○ みたいになってしまっても, ムービークリップはムービークリップですから, モーショントゥイーンで動かすことも,インスタンス名を付けることもできます。 もう1つは, 何も描かない状態で 「挿入」→「新規シンボル」→「ムービークリップ」にチェックを入れて「OK」をクリック。 これでライブラリ内に空のムービークリップシンボルができます。 ステージ上はなぜか,その空のムービークリップ内のタイムラインに移ってしまいますが, 「シーン1」をクリックしてもとの親(_root)の編集に戻り, ステージ上にライブラリの空のムービークリップをドラッグ&ドロップで引きずり出しても, 空のムービークリップは作成できます。 好き嫌いの問題でどちらでもかまいませんが, 私は最初に書いた方法で空のムービークリップを作成する方が好きです。

a-kira1966
質問者

お礼

詳しいご回答有難うございました。 真ん中の表示もきちんとできるようになりました。 まだ分からない言葉とか用語などあってちんぷんかんぷんなところが多いですが 色々なことが出来るように勉強して行きたいと思っています。 これからも宜しくお願い致します。

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

関連するQ&A

  • 外部jpgを表示できません。

    勉強はしているものの、なかなか理解に苦しんでいる初心者です。 左右にスクロールする mc(picg)の中に外部jpgの小さい画像を表示するための mc(pics0~pics9) があり、 この(pics0~pics9)のmcを押すと、別に設置したmc(screen)に外部jpgの大きな画像が表示されるというのを作っています。 大きい外部jpgの表示はなんとかできたのですが、(pics0~pics9)に小さい画像を表示することができません。 どなたかご教授の程よろしくおねがいいたします。 例 pics0 の script です。 onClipEvent(enterFrame){ loadMovie("pics0.jpg","_root.picg.pics0"); } on (release) { loadMovie("picl0.jpg", "_root.screen");  } on (rollOver) { _parent.fScroll = false; } on (rollOut) { _parent.fScroll = true; }

    • ベストアンサー
    • Flash
  • 重たい外部swfのプリロード

    空のmcをステージにおき、そのフレームに、loadMovie();で外部のswfを読み込むまでは、出来るのですが、その外部swfが重い場合なので、プリロード(%)表示させたいのですが、どの場所にどういったscriptが、必要ですか? onClipEvent (data)ハンドラで外部ファイルのロードを待つとかのscriptを書いてるのですが、間違っているのでしょうか?

  • 外部の画像をボタンとして使用

    オンマウスで画像が変わるボタンを作成したいのですが、 使用する画像を外部ファイルにしたところうまく動作しません。 ボタン用のMCを設置し、MCアクションに以下のように記述しましたが 画像は表示されませんでした。 onClipEvent (load) {  filename = "images/button.gif";  loadMovie(filename,this); } どこをどう直せば画像を読み込めるようになりますか? ※FLASH CS3 / AS2.0です ※画像のパスは正しい事を確認しています。

    • ベストアンサー
    • Flash
  • MCのアクションの値を外部データで編集する方法

    環境はwindowsVista FlashCS3 ASバージョンはサンプルが1.0なので1.0のままです。 憲ちゃんFlash hfmサイトさんの「Flash5による外部JPEGを使った自動スライドショー」 http://hfm-kenchan.com/Lesson/log_qa/D0708311.htm を参考にしています。 目的は、このサンプルが読み込みjpgの最大数をFlaデータ内で編集を行う形なので、 それを外部で値を変えられるようにしたいです。 同ディレクトリに「photo」フォルダを作りその中にp1.jpg、p2.jpg~と、連番でjpgデータが入っています。 メインタイムラインのレイヤー1のフレーム1に画像と同じ大きさのMC「MC_photo」(リンゲージ:pic) さらにその中にシェイプでできた同じ大きさのMC「base」(インスタンス名:loadMC)があります。 MC「base」にはおそらくフェードのアクションがついています。 「MC_photo」には下記のアクションがついています。 //////////////////////////////////////////////////////////////////// onClipEvent (load) { Max = 6; Sec = 6; Path = "photo/"; n = depth=cnt=0; function loadPic() { n++; if (n>Max) { n = 1; } depth++; mcName = "mc"+depth; this.attachMovie("pic", mcName, depth); this[mcName].loadMC.Loaded = false; this[mcName].loadMC.loadMovie(Path+"p"+n+".jpg"); if (depth>2) { this["mc"+(depth-2)].removeMovieClip(); } } loadPic(); } onClipEvent (enterFrame) { cnt++; if (cnt>Sec*12) { cnt = 0; loadPic(); } } //////////////////////////////////////////////////////////////////// ↑このアクションの2行目の Max = 6 ; を外部ファイルで編集できるようにしたいと思い、 同ディレクトリに date.as をつくり、as内は Max = 2;  と記入し、 //////////////////////////////////////////////////////////////////// onClipEvent (load) { #include "date.as" Sec = 6; (同上なので略) //////////////////////////////////////////////////////////////////// このように書き換えパブリッシュしたら成功しました。 photoフォルダにはp6.jpgまで入っていますが、p1とp2がループしました。 しかし・・・、経験者の方はすでに気がついておられるでしょうが、 .asファイルってパブリッシュ後は変更しても反映されないのですね…。知らなかったです。 XMLのように後で書き換えができるのだと考えていました・・・。 そこで、XMLやtxtで扱える方法を探していると、 .txtを用いて値を変更する場合はLoadVarsクラスを仕様する例が沢山あるのを見つけ、 教えて!にある「LoadVars」がつくログで症状が近そうなのアクションは試してみたのですがどうにもうまくいきません。 シンタックスチェックをしてエラーが出ない時でも、パブリッシュswfを再生すると、 指定したい数を無視してすべての画像が表示し終わった後に黒い画面が出てきます。(MCが黒です) おそらく、Maxの効果がなくなったようになり繰り返さなくなったのだと思います。 LoadVarsクラスはステージ上のテキストにだけ反映されて、アクション内の値を変えることはできないのでしょうか? どなたかこの原因とこの書き方がおわかりの方はいますでしょうか? LoadVarsクラスに限定はしていません、XMLでもかまわないです。 Flaデータがなくても外部データだけで編集と反映させるにはどのようにしたらよいか、ご教授お願いいたします。 宜しくお願いします。

  • loadMovieでjpgを外部テキストから読み込むには?

    私はloadMovieを使ってjpgファイルを読み込みたいとおもっているのですが、ただjpgファイルを読み込むのではなく、変数指定を行い、外部txtファイルの変数に指定されているjpgファイルを読み込むようしたいと思っています。 下記のようなソースで書いているのですが、うまくいきません。どうか手ほどきしていただけないでしょうか? お願いします。 (1)タイムライン上に下記のプログラムを書いています。 forJpeg.loadVariables("test.txt"); (2)forJpeg2のムービークリップに下記のプログラムを書いています。 onClipEvent (load) { _root.forJpeg2.loadMovie(abc);//()内は変数名 } (3)test.txtファイルは下記のように書いています。 abc=news.jpg

    • ベストアンサー
    • Flash
  • FLASH内MCの表示・非表示

    どなたか教えて下さい。FLASHにて外部テキストを読み込み、その読み込む文によってMCを表示・非表示させたくて下記のようにソースを書いたのですが、変数のw03の部分をakairo以外の文字にしてもaka(MC)が表示されてしまいます。。。 akairo意外の文字にした場合、ao(MC)が表示になるようにしたいのですが、どなたか教えて頂けると幸いです。よろしくお願いします。 this.stop(); System.useCodepage = true; g01.loadVariables("test.txt"); //外部読み込み if (g01.w03 == akairo) { //もしg01内のダイナミックテキストw03の読み込んだ文字が akairo なら aka._visible = true; //aka(MC)を表示 ao._visible = false; //ao(MC)を非表示 }else{ //そうでなかったら ao._visible = true; //ao(MC)を表示 aka._visible = false; //aka(MC)を非表示 } 外部テキスト(test.txt)は w01=ワード01&w02=ワード02&w03=akairo になっています。

    • ベストアンサー
    • Flash
  • 外部jpeg読込み

    外部jpegを読込用 ムービークリップ"img"に対して外部jpegを読み込もうとしています。 ムービークリップに直接loadMovie(Path)として画像を読み込んで、そのムービークリップのアクションで onClipEvent (load) { this._width = 100; this._height = 50; } とサイズを指定しています。 このサイズを指定しているアクションを_rootステージのアクションスクリプトレイヤーに置き換え直接書きたいのですが方法はないのでしょうか? ご教授ください。

    • ベストアンサー
    • Flash
  • 外部テキストを読み込んで外部swfを表示

    flashの中に外部テキストに指示されたswfを読めるようにしたいのです。 今、試しているのが、 外部のテキスト(pics.txt)の中は pict="51.swf"と書いて flaには onClipEvent (load) { this.loadVariables(”pics.txt”); } onClipEvent (data) { myPict=pict; myStage.loadMovie(myPict); } とやってみたのですが、ぜんぜんダメでした。 どうしたもんでしょう? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASH外部ファイルの読み込み

    Flashでjpegファイルの読み込みをしたいのですが、 アクションスクリプトで onClipEvent(load){ _root.hyouji_mc.loadMovie("face1.jpg"); } とインスタンスに記入するとなにも表示されません。 【hyouji_mc】を青色にして実行するとスクリプトのない状態ですと青の四角が表示されるのですが、スクリプトを実行すると真っ白になり、やはり画像が表示されません。 試しに【load】をe【nterFrame】に変えてもだめでした。 【mouseDown】や【mouseMove】,【keyDown】にすると画像は表示されます。 【onClipEvent】を【on(rease)】等に変更をしても表示されます。 (1)どうにかフレームが読み込まれた時に画像が表示される様にしたいのですが、解決策としてはフレームアクションとして記述するしかないのでしょうか? (2)【onClipEvent(load,enterFrame)】で   【loadMove()】は実行できないのでしょうか? フラッシュはMXを使っています.OSは2000です。 意味がわかりにくいと思いますが、ご教授ください. よろしくお願いします。

  • 画像のランダム表示

    こんにちは。 フラッシュで、画像をランダムに表示させたいのですが、 スクリプトの書き方がわかりません。何方か教えていただけないでしょうか? 構成は ステージ上の【表示ゾーン(zon_mc)】ムービークリップの中に【バリ表示(bari_mc)】ムービークリップを作っています。 トップのステージのタイムラインとは別に画像を表示、非表示させたいのでこのような形になってます。 表示させたい画像は【bari】ファルダの中の【bali01.jpg】~【bali06.jpg】です。 よろしくお願いします。

    • ベストアンサー
    • Flash