• ベストアンサー

円拡大(スクリプト制御)

BlurFiltanの回答

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

すみません。#1と#2で回答した者です。 「"ロールオーバー"で逆再生を開始」 でしたね。ロールオーバーのことを忘れていました。 #2の回答の続きということで、 さらに on (rollOver) で flag の値を変えるという部分を付け加えます。 #2 の下の方のスクリプトだと、flag だけで動きをコントロールしているので、 さらに付け加えをするのが簡単になります。 on (rollOver) がムービークリップに書けるようになったのは Flash MX以降なので、 勝手にバージョンを上げさせてもらって、Flash MX 以降対応のスクリプトにしました。 ─────────────────── // === MCが表示されたときに実行 === onClipEvent (load) { // このMCの初期サイズを記録 var myW = this._width; var myH = this._height; // on(event)ハンドラ を無効に this.enabled = false; // 変数 flag の初期値を設定 var flag = 0; //--- 各 myFunc0~6 の関数を定義 --- // 右へ移動する関数の定義 function myFunc0() { this._x += (200-this._x)/3; } // 下に移動する関数の定義 function myFunc1() { this._y += (100-this._y)/3; } // 拡大する関数の定義 function myFunc2() { this._width += (50-this._width)/3; this._height += (50-this._height)/3; } // サイズを固定する関数の定義 function myFunc3() { // on(event)ハンドラ を有効に this.enabled = true; this._width = this._width; this._height = this._height; } // 縮小する関数の定義 function myFunc4() { // on(event)ハンドラ を無効に this.enabled = false; this._width += (myW-this._width)/3; this._height += (myH-this._height)/3; } // 上に移動する関数の定義 function myFunc5() { this._y += (0-this._y)/3; } // 左に移動する関数の定義 function myFunc6() { this._x += (0-this._x)/3; } } // === ロールオーバーで flag を 4 にする === on (rollOver) { flag = 4; } // === 随時実行 === onClipEvent (enterFrame) { // 条件による flag の切り換え if (flag == 0 && this._x>199) { flag = 1; } else if (flag == 1 && this._y>99) { flag = 2; } else if (flag == 2 && this._width>49) { flag = 3; } else if (flag == 4 && this._width<myW+1) { flag = 5; } else if (flag == 5 && this._y<1) { flag = 6; } // 関数 myFunc? を実行 (? は flag の値によって変わる) this["myFunc"+flag](); } ─────────────────── ↑ムービークリップにコピー&ペーストしてもらうと、 Flash MX 以降(Flash Player 6 以上) では動作すると思います。 on (rollOver) で 「flag が 3 のときだけ、flag を 4 にする」 というスクリプトにしても良かったのですが、 また if文が増えることにもなりますし、ボタンとして機能しないときにカーソルが変わるのも変ですから、 初期設定で enabled = false; の状態にしておいて、 定義関数で enabled = true; と enabled = false; を切り換える方法にしました。 enabled = true; で on(event)ハンドラ が有効になり、 enabled = false; で on(event)ハンドラ が無効になります。 ですから、拡大した状態で初めて on (rollOver) が有効になります。

tomgreen
質問者

補足

とてもわかりやすい説明ありがとうございます。 こういう基本的な動きの場合を、応用する時も含めてなのですが、 やり方はいろいろあると思うのですが、プロ中のプロが、動かす場合 どういった方法が、一般的なのでしょうか?

関連するQ&A

  • Action Script2.0で開発してます。

    Action Script2.0で開発してます。 CS4上であらかじめ生成してあるmcにpngファイルをロードして画像表示しています。 その後、画像の中心を基準点として縮小拡大をしたいのですが、 pngファイルをロードする時にはmcの基準点を左上に設定して位置合わせしているために、 ロード後に基準点を画像の中心に移動したいと思います。 ActionScript2.0でどのようにプログラミングすればいいのでしょうか?

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

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

    • ベストアンサー
    • Flash
  • FLASHで振り子風の移動スクリプトを教えて下さい

    こちらでは大変お世話になっております。 前回に引き続き移動のスクリプトを教えていただきたいのです。 ムービークリップをクリックすると、振り子のように1点は固定をしたまま右へ40度移動させる。次にクリックするともとの位置に戻る、次にクリックするとまた右へ40度、次はもとに戻る…。 というような、2つの地点を行き来するだけの動きにしたいのです。 on (release) { this._rotation -= 40; } ムービークリップに上のような記述をすると、1回目のクリックは良いのですが、2回目のクリックでそのまま40度ずつ回り続けてしまいます。クリックするたびに行って戻るだけの繰り返しができるアクションスクリプトを教えていただければと思います。 超初心者で勉強しはじめたところです。 どうかよろしくお願い致します。 アクションスクリプト2.0 FLASH CS5

  • FLASHで移動のスクリプトを教えて下さい。

    FLASHについて質問です。シンボル移動のアクションスクリプトを教えて下さい。 FLASH CS5 XPとVista使用 アクションスクリプト 2.0 簡単なゲームを作っています。 動かしたいムービークリップをフレーム移動ではない方法を考えています。 ムービークリップの名前を「maru」とし、ステージにx200、y200の位置(A地点)に配置しムービークリップをクリックする、 すると右に100移動、(B地点) 2回目にクリックすると元の地点(A地点)に戻る。 3回目にクリックするとまた右に100移動、(B地点) 4回目にクリックすると元に地点(A地点)に戻る。 ・・・というような一つのムービークリップがA地点とB地点を行き来するだけの動きを希望しています。 このようなアクションスクリプトを試してみました。 on (release) { if (_x > 200) { marux = -marux; } if (_x < 200) { marux = -marux; } _x += marux;} onClipEvent (load) { marux = 100; } ところがこれだと、3回目のクリックでもとのA地点に行かずに-100の座標、A地点より100左の地点へ行ってしまします。 ムービークリップにいれるアクションスクリプトを教えて下さい。 どうかよろしくお願い致します。

  • 画像を拡大した時の位置ズレの修正方法を教えてください

    フラッシュで簡単なアニメーションを作りたいと思っています。 右上を中心に画像が少しずつ拡大(ズームアウト)していくという動きをつけたいと思いモーショントゥイーンで拡大させました。 拡大自体は問題なく出来たのですが、再生すると何故か画像がブレてしまいます。 (ガタガタと画面自体が揺れる感じです。) 配置した画像の初めと終わりの位置がずれているのかと思い整列させてみたのですがやはり上手くいきません。 また、試しに左上を中心にしたらぶれることなく望んでいたものが出来ました。 右上を中心にスムーズに拡大させる方法を教えて頂けますようお願いします。 使用しているのはflash mxで、画像自体はフォトショップで作ったjpg画像を読み込んでます。 よろしくお願いします。

  • FLASH アクションスクリプト

    画面のサイズを拡大縮小しても 常にセンターに表示させる アクションスクリプトで質問がございます。 back_mcが【背景】 main_mcが【オブジェクト】 _root.main_mc._x = ( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = ( Stage.height - _root.main_mc._height) /2; このアクションスクリプトで【オブジェクト】が最初から常にセンター表示になる事は分かるのですが、例えば座標x600 y500で始まるようにするのはどうしたら良いのでしょうか。 下記のアクションスクリプトでは、【オブジェクト】がx600 y500の位置に最初はあるのですが画面のサイズを拡大縮小してもピクリとも動きません。 Stage.align = "TL"; Stage.scaleMode = "noScale"; Stage.addListener(this); this.onResize = function() { _root.main_mc._x = 600;( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = 500;( Stage.height - _root.main_mc._height) /2; _root.back_mc._width = Stage.width; _root.back_mc._height = Stage.height; } this.onResize(); いまいち分かりにくい質問ですが伝わりますでしょうか。 分かる方、宜しくお願い致します。

    • ベストアンサー
    • Flash
  • サブウィンドウの動きを制御したい!

    親ウインドウのボタンをクリックすると、 サイズ400×300のサブウィンドウがモニタ画面の左上(0,0)にオープンするようにしました。 このサブウィンドウは、モニタ画面に現れると同時に、 まずは、ツツーッと下にすべってタテ位置のみモニタ画面中央に行き、 行き着いたところで今度は、右方向にツツーッと滑って、 最後にはモニタ画面のど真ん中に配置されるようにしたかったのです。 そこで、サブウィンドウ内には、以下のスクリプト(onload)を書きました。 <script language="javascript"> <!-- var disW= screen.availWidth; var disH= screen.availHeight; var cX=disW/2-200; var cY=disH/2-150; var pX=0; var pY=0; var timerID; function moveWin(){ if(pY < cY){ pY+=5; window.moveTo(0,pY); timerID=setTimeout("moveWin()",1); } if(pY==cY){ pX+=5; window.moveTo(pX,cY); timerID=setTimeout("moveWin()",1); } else{ clearTimeout(timerID); } } //--> </script> でも、うまくいきません。 ふたつめのifがいけないのでしょうが、 未熟なためどうしてなのかわかりません。 どなたか、教えてください! よろしくおねがいします。

  • Flash MCにロールオーバーするとスライドインするテキスト

    これをなんとかやってみようと試行錯誤してますがうまくいきません。ロールオーバーさせようとしているMCはマウスがロールオーバーすると拡大するというスクリプトが書かれています。このアクションと同時にマウスのロールオーバー時にテキストをスライドインさせたいのですが、どのようなスクリプトをかけばよいでしょうか? 透明ボタンを作って拡大されたMCとの当たり判定でテキストをスライドインさせる等の試行錯誤をしましたがうまくいきません。どうかご教授よろしくお願いします。 プライベートのチューターとして、時給でチューターを探そうとさえ考えています。

  • マウスオーバーで位置をかえる

    マウスオーバー時にマウスカーソルがのっている画像の位置を「下に○px右に○pxだけ移動」と言う風にしたいのですがどうすればいいでしょうか?? また、マウスアウトでの元に戻し方とあわせて教えていただけたら幸いです。

  • as3.0でのフレーム移動制御のスクリプト

    当方、FLASH cs4、as3.0で製作をしております、まだ初心者です。 以下のタイムラインを動作させようとしているのですが、どうにも行き詰まってしまいこちらに参りました。 どなたかご教授頂けないかと願っております。 どうぞ宜しくお願い致します。 flaステージ上に(A_btn)、(B_btn)、(C_btn)、(D_btn)、(C_btn)という5個のボタンインスタンスを配置しています。 オープニングと同時にA_mcの前半を再生してA_stopラベルのフレームで停止します。 (9フレーム目のasには stop(); 記述済み) その状態で(C_btn)や(D_btn)をクリックした時に、A_stopラベルのフレームからA_closeラベルのフレームに移動して A_mcの後半を再生して、A_mcが終了する(17フレーム目)と同時にB_mcを飛び越えてC_startやD_startラベルのフレームに移動しムービーを再生するには、どのフレームにどんなラベルを追加したり、スクリプトを記述すれば良いか具体的にお教え願えませんでしょうか。 同様にB_mcからC、Dを飛び越えてE_mcに移動したり、E_mcからAやBにも移動させたいです。 また、上記はタイムラインアニメですが各々のmcをswfとしてロードする場合も合わせてご教授頂けると幸いです。