• 締切済み

マウスを乗せるとランダムに画像が舞い上がる

ある画像(たとえば★とします)にマウスを乗せると しゃぼんだまを飛ばしたようにランダムにある画像(★)から舞い上がると言うような物を作りたいと思っています。 マウスをはずすと舞い上がるものも消える(止まる)ようにしたいです。 ボタンのオーバーフレームにムービーを作ってみたのですが、動きがぎこちなく納得がいきません。 アクションスクリプトを使うとできるのかなと思いましたがボタンアクションかムービークリップアクションにすればよいのか分かりません。 このときにできればマウスポインターが指の形に変化しないようにしたいとも思っています。 よろしくお願いします。

みんなの回答

  • perse
  • ベストアンサー率74% (113/152)
回答No.2

星のMCのインスタンス名を[hoshi_mc]としてステージ(_root)に配置します。 シャボン玉のMCを作成(ただの○とかだけでOK)し、 リンケージ識別子を[maru_mc]とします。 識別子のつけた方はライブラリ内のMCを右クリックして[リンケージ]を選択し、 [ActionScriptに書き出し]と[最初のフレームに書き出し]にチェックを入れます。 以下のスクリプトを_rootのタイムラインに記述します。(全角が入ってます) //--------------------------------------------- //作成したシャボン玉MCを格納する配列 var mc_array = new Array(); //setIntervalを削除するための識別用変数 var id:Number = 0; //作成したシャボン玉MCの数 var idx:Number = 0; //マウスを手の形にしない _root.hoshi_mc.useHandCursor = false; //星MCにマウスが乗っかったときの処理 _root.hoshi_mc.onRollOver = function() {   //---------------------------------------   //シャボン玉MCを作成する関数   //mc:hoshi_mc   //---------------------------------------   function MakeMC(mc) {        //シャボン玉MCをステージに配置     mc_array[_root.idx] = _root.attachMovie("maru_mc", "maru"+idx, _root.getNextHighestDepth());     mc_array[_root.idx]._x = mc._x+Math.floor(Math.random()*11-Math.random()*11);     mc_array[_root.idx]._y = mc._y+Math.floor(Math.random()*11-Math.random()*11);          //シャボン玉MC内にthetaという変数を作成     mc_array[_root.idx].theta = Math.floor(Math.random()*181);          //シャボン玉MCのフレーム毎の動き     mc_array[_root.idx].onEnterFrame = function() {            //上に移動       this._y -= 10;       //左右に移動       this.theta++;       this._x += Math.cos(this.theta)*5;              //ステージから見えなくなったら削除(-10は適当)       if (this._y<=-10) {         delete this.onEnterFrame;         this.removeMovieClip();       }            };     _root.idx++;   }      //関数呼び出し thisはhoshi_mc;   MakeMC(this);   //一定時間毎に呼び出し (500ミリ秒毎)   _root.id = setInterval(MakeMC, 500, this);    }; //星MCからマウスが外れたときの処理 _root.hoshi_mc.onRollOut = function() {   for (i=0; i<mc_array.length; i++) {     delete mc_array[i].onEnterFrame;     mc_array[i].removeMovieClip();   }   clearInterval(_root.id); }; //---------------------------------------------

  • rs5_5
  • ベストアンサー率75% (3/4)
回答No.1

まずステージに、「ムービークリップの★(以下★)」と「ムービークリップのシャボン玉(以下シャボン玉)」を用意します。 シャボン玉の1フレーム目には空白キーフレームを入れ、フレームアクションでstopしておく。2フレーム目以降に舞い上がるようなムービーを作成しておく。 そして、シャボン玉のインスタンス名をmcとし、★に以下のアクションを書きます。 onClipEvent(enterFrame){ if(this.hitTest(_root._xmouse,_root._ymouse,1)){ _root.mc.play(); }else{ _root.mc.gotoAndStop(1); } } こうすれば、マウスポインターも変化しないと思います。

morino-kumasan
質問者

補足

ご回答有難うございます。 マウスポインターも変化しなくていいのですが もう少しランダムにいくつかのシャボン玉が出てくるようにしたいのです。 泡をのムービーを沢山作ればいいのかな?とは思いましたが それだと同じ動きを繰り返すだけなので 思ったようなフワフワとした動きにならないのです。 このような感じで http://www.miyoshi-sh.aichi-c.ed.jp/play_room/shabon/index.html 最初のシャボン玉の液をつけるや、クリックする必要はありませんが、舞い上がるイメージはこんな感じです。

関連するQ&A