ブラウザの高さに合わせて伸縮するムービークリップのスクリプト

このQ&Aのポイント
  • ブラウザの高さに合わせて伸縮するムービークリップのスクリプトについて
  • ステージの縦の高さに合わせてムービークリップを拡大・縮小させるスクリプトについての質問です。
  • ステージの縦横中央に配置されたムービークリップの大きさを、ステージの縦の高さに合わせて伸縮させるスクリプトについての問い合わせです。
回答を見る
  • ベストアンサー

ブラウザの高さのみにあわせて伸縮するムービークリップのスクリプトについて

よろしくお願い致します。 ステージの縦横中央に、800px×500pxのムービークリップ(インスタンス名:contents)を配置しています。 ステージの縦の長さが700pxより大きければ、contentsの大きさを800px×500pxで固定して、700px より小さければ、ステージの縦の大きさに合わせてcontentsを縮小させていくスクリプトを書きたいと思っています。 ブラウザに合わせてムービークリップを拡大・縮小させるスクリプトは分かるのですが、ステージの縦の高さ のみに限定して縦の高さが700px以上のときはムービークリップの大きさを固定する、というのがよく分かりません。 どなたかお分かりになられる方がいらっしゃいましたら、どうかご教授下さいますようお願い致します。

  • Flash
  • 回答数1
  • ありがとう数1

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

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

800px×500px のムービークリップ(インスタンス名:contents)は, 横幅が 800px で,高さが 500px ということですよね。 そして,その比はそのままで, ステージの縦の高さが700px以上のときはムービークリップの高さを700px(横幅=1120px)で固定, ステージの縦の高さが700px未満のときはムービークリップの高さをステージの高さ(横幅=800/500×ステージの高さ)で変動させる。 ということですね。 そうだとすると, そのこと(上に書いたこと)を実行させれば良いのです。 まず, ムービークリップ contents は左上のコーナーを基準点として作成します。 基準点の位置によってスクリプトは変わるので基準点の位置がものすごく大切です。 この ムービークリップ contents の基準点がステージの左上のコーナー(0,0)に来るように配置します。 つまりステージ左上にピッタリ付けるということです。 そして,このムービークリップ contents が存在するフレーム(_root の フレーム1 など)に, 次のスクリプトを書けばできあがりです。 ---------------------------------------------- // ステージ内容の拡大縮小なし Stage.scaleMode = "noScale"; // ステージの上左を拡大縮小の基準にする Stage.align = "TL"; // MC(ムービークリップcontents)の横幅の設定 var MW:Number = 800; // MCの高さの設定 var MH:Number = 500; // MCの高さの上限を設定 var MHMax:Number = 700; // ステージ監視用のインスタンスを作成 var sListener:Object = new Object(); // ステージのサイズが変わったときの動作定義 sListener.onResize = function() { // もしステージの高さがMCの高さの上限以上であれば if (Stage.height>=MHMax) { // MCの高さと横幅を固定 contents._height = MHMax; contents._width = MW/MH*MHMax; } else { // それ以外は MCの高さをステージの高さで変動させる contents._height = Stage.height; // MCの横幅を同じ比で変動させる contents._width = MW/MH*Stage.height; } // 即 表示を更新 updateAfterEvent(); }; // ステージ監視用インスタンスをステージのリスナーとして登録 Stage.addListener(sListener); // 最初の表示段階で sListener.onResize を実行 sListener.onResize(); ---------------------------------------------- スクリプト的には, 物によって変える部分は次の部分だけです。 // MC(ムービークリップcontents)の横幅の設定 var MW:Number = 800; // MCの高さの設定 var MH:Number = 500; // MCの高さの上限を設定 var MHMax:Number = 700; しかし, 800 や 500 は ムービークリップ 自体からも取得できますから, 次のようにしても良いと思います。 // MC(ムービークリップcontents)の初期横幅を記録 var MW:Number = contents._width; // MCの初期高さを記録 var MH:Number = contents._heighth; // MCの高さの上限を設定 var MHMax:Number = 700; こうすると,高さの上限の設定だけで済みます。 つまり, ムービークリップを作成しなおした場合でも,高さの上限を変えないとすれば, 何も変える必要はなくなります。

patsaysnow
質問者

お礼

丁寧にご回答頂き誠にありがとうございました。 お教え頂いたスクリプトで問題なく動作いたしました。 var MHMax:Number = 700; 上限を指定すれば良いのですね。勉強になりました。 // MC(ムービークリップcontents)の初期横幅を記録 var MW:Number = contents._width; // MCの初期高さを記録 var MH:Number = contents._heighth; // MCの高さの上限を設定 var MHMax:Number = 700; この記述方法であれば、同じように縮小したいムービークリップに応用できるんですね。 色々とお手数をお掛け致しました。本当にありがとうございました。

関連するQ&A

  • ムービークリップとインスタンス

    「ライブラリ内にあるのがムービークリップで、それをステージに配置したものがインスタンスである。」このように理解しているのですが、これは間違いでしょうか? 1、「MCを一つ作成し、それをステージ上に3カ所に配置し、各"MC"に01、02,03とインスタンス名を付けた。」 2、「MCを一つ作成し、それをステージ上に3カ所に配置し、各"インスタンス"に01、02,03とインスタンス名を付けた。」 上記の場合どちらが正しいのでしょうか? ムービークリップとインスタンスについてご教授ください。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • <Flash>ムービークリップにアクションスクリプトを記述できない。

    <ムービークリップ>インスタンスにアクションスクリプトを 記述するために、スクリプトペインを開くと、 「現在の選択範囲にアクションを割り当てることはできません」 と表示されます。 きちんとムービークリップ化していますし、 インスタンスも選択しています。 でもフラッシュを勉強して間もないので、 おそらく根本的ななにかに気づいてないのだと思います。 書籍に書いてある通りに作業を進めているのですが、 うまくいきません・・・。 書籍に付属しているサンプルデーターでは、 きちんとムービークリップにスクリプトが記述されています。 バカな質問になっているかもしれませんが、 宜しくお願いいたします。

  • xmlに書かれた数だけムービークリップを生成したい。

    FlashCS3 AS2.0 FlashPlayerバージョン8で作成しています。 xmlをFlashに読み込む事自体は初めてではないです。 図は背景の黒い部分がHTMLで、Flash内でスクロールをさせたいイメージです。 phpから送られてくるxmlデータにコンテンツの総数が書かれた <total>タグを付け、その<total>内にある数だけMCを作成したいと思っています。 コンテンツの総数は多くても15個ほどです。 分からない事は ・xmlから受けたデータの数だけMCを生成するスクリプト (AS3だと類似したスクリプトが見つかるのですが・・・。) ・生成するにおいて、MCを配置する場所を決めたい。 (どんどん下に追加されていくように配置したい) ・コンテンツ数が1つだった場合、Flash内でスクロールが出ないようにし、コンテンツ数が複数になった場合だけスクロールが出るようにしたい。 (ステージサイズ自体は縦に2000pxくらい長くして、コンテンツがイラストの赤い枠線より大きくならなかった場合スクロールを表示させない) スクリプトでムービークリップを動的に増やさずに、 最初から複数縦に並べておいて、コンテンツ数が1個のときに2個目以降のMCは何も 表示されないようにし、スクロールしないように設定してあげて、 逆にコンテンツ数が2個目以降はスクロールを表示してあげれば簡略化できるのでしょうか・・・。 何卒よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • jpgを規定の範囲内に表示したい

    Flash初心者です。 ムービークリップ(インスタンス:image)に外部ファイル(jpg)を ランダムに読み込んで表示していまして 何とか表示することまではできました。 外部ファイルは全て大きさが異なっていますので 横と縦の長さがそれぞれ異なっており this._width=150 this._height=100 のようにしてしまうと 縦横の対比が異なってしまうためきれいに表示ができません。 縦100px、横150pxより大きくなってしまった場合 縦横同じ比率で縮小させて表示させるには どのようなスクリプトを書けばいいでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップのグラデーション

    Flash Professional 8 を使用しています。 予め描画した長方形のムービークリップ(線状のグラデーション設定をしています)を 1つステージに配置しています。 このムービークリップに対して、別の色のグラデーションに塗り替えたい場合、 手動による変更(カラーパレットから)しか方法はないのでしょうか? スクリプトによる変更はできませんか? ご教授をお願いいたします。

  • ムービークリップ

    はじめまして、初心者的質問ですがよろしくお願い致します。今MAC OSX上でFLASH MX(2004ではありません)を使っています。写真が現れ(アルファ0→100)だんだん拡大して消えていくと同時に、次の写真がまた現れ拡大して消えていくというムービークリップをつくりました。それをシーンの1フレーム目に配置すると、書き出した時それなりに見えるのですが、例えば2フレーム以降に配置しすると、書き出した時、写真が拡大していくところで、すごくきたないガビガビの動きになってしまいます。調べたところ2フレーム目に配置するというよりも、1フレーム目に配置していても、ただフレームを増やすだけでそうなるようです。的外れでわかりにくい質問かもしれませんがどうぞよろしくお願い致します。

  • AS3リンケージ設定したムービークリップの中で、フレーム移動がしたいです。

    初心者です。 AS3で、 リンケージ設定したムービークリップを addChildで呼び出し、 呼び出したムービークリップの中の、 指定したフレームに移動するにはどうしたら宜しいでしょうか。 ステージに配置した場合、インスタンス名を付けて インスタンス名.gotoAndPlay("フレームラベル"); で移動しますが、 リンケージ設定したムービークリップの場合はインスタンス名の代わりに リンケージ名で呼び出せないのですか。

    • ベストアンサー
    • Flash
  • ムービークリップ内に空ムービーを置いて外部SWFをロードするやり方

    ムービークリップ(menu1)このムービーはシーン1に設置してあり、動きはクリックすると右から左に引き出す感じのナビゲーションにしてあります。 それがmenu1,menu2,menu3とありそれぞれ再度押すと元の場所にもどります。 ここまでは完成しているのですが、このmenu1,2,3をそれぞれ押して引き出した後にその引き出した画面にコンテンツを外部swfでロードさせたいのですが、まったく表示されず白い画面のままです。 this.stop(); if(this.onFlag == 0){ //↑左にコンテンツをopenさせ元の位置に戻らぬようストップ //↓menu1外部charch読み込みswf_charchは空ムービー swf_charch.loadMovie("charch.swf"); } このスクリプトをムービークリップmenu1のフレームに書き込んでます。 空ムービー(swf_charch)をつくりmenu1に配置して、インスタンス名もswf_charchにしてあります。 もしかして、ムービークリップ内に空ムービーを入れ子にして外部swfの読み込みは不可能なのでしょうか? それともスクリプトの記述がloadMovieではなく別のスクリプトなのでしょうか? 説明が下手で分かりづらいと思いますが、分かる方いらっしゃいましたら宜しくお願いいたします。

  • flash ウインドウの大きさを変更しても常に定位置

    falsh8でアクションスクリプトのバージョンは1でわからないことがあるので教えてください。 ステージ上に、 ムービークリップの インスタンス名 mc1 と ムービークリップの インスタンス名 mc2 と ムービークリップの インスタンス名 mc3 を配置しております。 ブラウザのウインドウの大きさを変更しても常に、 mc1 はウインドウの最上部に表示 mc2 はウインドウの中央部に表示 mc3 はウインドウの最下部に表示させたいのですが、どういうスクリプトを書けばよいでしょうか? 教えてください、よろしくお願いします。

  • Flash フレームを指定してムービークリップ再生

    ActionScript超初心者です。 よろしくお願いします。 ステージ上にボタン「A」「B」「C」を配置、 ボタン脇のスペースにムービークリップを配置、各ボタンで切り替え再生させたいと思っています。 2フレーム目に簡単なアニメーションのムービークリップ「animA」を、 3フレーム目に同様の「animB」4フレーム目に「animC」を配置し、 各ボタンon (release)で各ムービークリップの再生をしたいのですが うまくいきません。 どこにどのようなスクリプトを書けば良いか教えていただけないでしょうか。 よろしくお願いします。

    • ベストアンサー
    • Flash

専門家に質問してみよう