• 締切済み

マウスーオーバーすると逃げるようにしたい!

マウスオーバーするとランダムにアイコンが逃げるようにしたい。 触ろうとするとすっと逃げるようなアクションをしたいです。 一定の方向ではなくて、右へ左へはたまた上へという感じです。 on(rollOver) { angle = this._rotation-10; radian = (angle/180)*Math.PI; for (a=0; a<10; a++) { this._x -= 2*Math.cos(radian); this._y -= 2*Math.sin(radian); } } on (rollOut) { angle = this._rotation-10; radian = (angle/180)*Math.PI; for (a=0; a<20; a++) { this._x -= 1*Math.cos(radian); this._y -= 1*Math.sin(radian); } } 上記の場合だと一定の方向にマウスオーバーから逃げるのですが… これを色々な方向に生かせればなと思っております。 何卒よろしくお願いいたします。

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

みんなの回答

回答No.1

angleをランダムの値により0,-90,90でも入れたらいいのでは?

関連するQ&A

  • 三角関数を使った3D反転

    とあるサンプルでムービークリップが3D反転するというのを見つけたのですが、ちょっと分からない部分があるので、教えてください。 ---------------ステージ--------------------      [myKazami] ← 3D反転するMC      ---[myFader]---- ← スライダー(MC) ------------------------------------------- ※myKazamiの3D反転の仕方 [myKazami] → [] → [imazaKym] → 繰り返し ※ムービークリップ myFaderについて myFaderの中に入ると、myKnobというMCがあり、myKnobをdragすることにより、上記のようにmykazamiが反転します。移動範囲はX軸方向に「0→100」で、X座標が0のとき反転停止、100のとき最大スピードでmyKazamiが反転します。 //-- myFader内、myKnobのActionScript --------- on(press){  startDrag (this, true, 0, 0,100, 0); } on (release, releaseOutside) {  stopDrag (); } //-- _rootのフレームActionScript --------- v_radian = 0; v_windSpeed = 0; this.onEnterFrame = function(){  v_radian = (v_radian+v_windSpeed/100) % (2*Math.PI);  myKazami._xscale = 100*Math.cos(v_radian); }; myFader.onEnterFrame = function(){  v_windSpeed = this.myKnob._x; }; この v_radian = (v_radian+v_windSpeed/100) % (2*Math.PI); myKazami._xscale = 100*Math.cos(v_radian); といういう部分が分かりません。 「2*Math.PI」っていうのは一周した状態ってことですよね? なぜradian値を「2*Math.PI」で割ったあまりをradian値に代入するのか・・・ その辺が分からないのでご教授お願い致します。 (三角関数を使った基本的な計算は分かりますので、その辺を踏まえた説明からで大丈夫です。)

    • ベストアンサー
    • Flash
  • 立体回転運動 新たにボタンを作って一定角度だけ動かす

    お世話になります。 下記のプログラムは3Dのぐるぐる回るプログラムなのですが、 onClipEvent (load) { degree = 0; r = 100; centerx = 150; centery = 100; } onClipEvent (enterFrame) { radian = Math.PI/180*degree; this._x = centerx+r*Math.cos(radian); this._y = centery+r*Math.sin(radian)/2; this._xscale = this._yscale=this._alpha=this._y; degree += 5; } -------------------------------------------------------------------- それで、ここからなのですが、 onClipEvent (enterFrame) {  --省略-- degree += 5;  ↓ のところをまず削除して、新たにボタンを作って、そのボタンを押すと、 押すたびにある一定の角度分だけ円運動するようにしたいのですが、どうしたらいいんでしょうか? 単純にボタンを作って、 そこに on(release) { degree +=5; } と書いてもまともに動きません。 初心者なものなので、よろしくお願いします。 それと、このプログラムはムービークリップに記載されているのですが、出来たらルート画面のレイヤーにactionを作って、そこにスクリプトをまとめて書きたいと思うんですが、どうしたらいいんでしょうか?ムービークリップにインスタント名をつけて、上記のプログラムの前に、 ムービークリップインスタント名.onClipEvent (load) { --省略-- } ムービークリップインスタント名.onClipEvent (enterFrame) { --省略-- } としたら、フィールド名がありませんとエラーが出てしまいます。 長くなってしまいましたが、わかりずらい説明かとは思うのですが、重ねてよろしくお願いします。

  • 坂道を転がる動きをご教授願いたい

    現在、Flash8にて任意の角度を指定し、 そので転がるボールの動きを作っています。 Actionscriptは以下の通りです。 //角度 rot=0; //転がるmc、ballの質量 m=0.5; //静止摩擦係数 ius=0.05; //運動摩擦係数 iuk=0.07; //時間  t=0; tt=1/30; //重さ w=0.5*9.8; //坂道のmc、saka saka.onEnterFrame=function(){  this._rotation=rot; //垂直抗力  N=w*Math.cos(rot*Math.PI/180); //転がる力  Fp=w*Math.sin(rot*Math.PI/180); //静止摩擦力  Fs=ius*N; //転がるかどうかの判定  if(Fp<Fs){ //運動摩擦力   Fk=iuk*(w*-1); //加速度を出してx、yに代入    Fk_p=[Fk*Math.cos(rot*Math.PI/180),Fk*Math.sin(rot*Math.PI/180)]; Fp_p=[Fp*Math.cos(rot-180*Math.PI/180),Fp*Math.sin(rot-180*Math.PI/180)]; Fnet=[Fp_p[0]+Fk_p[0],Fp_p[1]+Fk_p[1]]; a=new Array(); a[0]=Fnet[0]/0.5; a[1]=Fnet[1]/0.5; t=t+tt; _root.ball._x+=0*t+1/2*a[0]*t*t; _root.ball._y+=0*t+1/2*a[1]*t*t; } //転がるボールのmc、ball ball.onEnterFrame=function(){  this._rotation=rot; } ballが坂道を転がらずあらぬ方向に行っちゃいます。 どこがどう間違っているのかも頭がゴチャついてて判りません。 物凄く勘違いなことをしているのだと思います。 お教え願えればと思います。よろしくお願いします。

    • ベストアンサー
    • Flash
  • 楕円の軌道に傾斜をつける方法を教えてください

    ActionScriptでボールを楕円に動かすスクリプトを作成しています。 x軸、y軸に平行に動くスクリプトはできるのですが、斜め45度に動くやり方がわかりません。 ↓x軸y軸に平行運動する楕円スクリプト。 //-------------------------------------------- //長軸100、短軸50の楕円形にボールを動かす r = 100;//半径 onClipEvent (enterFrame) { ang += 10; //角度を10ずつ追加 radian = Math.PI/180*ang; //ラジアンに変換(1度=pai割る180で計算) X = Math.cos(radian)*r; //コサイン×半径 でx座標を計算 Y = Math.sin(radian)*r; //サイン×半径 でy座標を計算 this._x = X; //Xを座標に反映 this._y = Y/2; //Yの半分を座標に反映 } //-------------------------------------------- なんとか傾斜した動きを作りたくていろんなサイトを見ましたが、どうしても式がわかりません。 ぜひ教えてもらえませんでしょうか。 どうぞよろしくお願いします。

    • ベストアンサー
    • Flash
  • [Flash]actionscript2.0を用いて歯車を作りたいのですが

    Adobe FLASH CS2を使い2つのかみ合った歯車を制作しています。 ドラッグで片方の歯車を回転させると もう片方の方は逆回転になるはずですが、 うまいことactionscriptをかくことができません。 片方はこのようなactionscriptを使っているのですが うまい作り方はないでしょうか。 よろしくおねがいします。 on (press) { //このMCの基準点からのマウス座標を取得 rx0 = _root._xmouse-this._x; ry0 = _root._ymouse-this._y; //このMCの基準点とマウスとの距離を算出 td0 = Math.sqrt(rx0*rx0+ry0*ry0); //マウスによる回転の差分を算出 tr0 = (Math.PI/2+Math.atan2(ry0, rx0))*180/Math.PI-this._rotation; //onEnterFrame を定義 this.onEnterFrame = function() { //現在のMCの基準点からのマウス座標を取得 rx1 = _root._xmouse-this._x; ry1 = _root._ymouse-this._y; //このMCの回転を計算 this._rotation = (Math.PI/2+Math.atan2(ry1, rx1))*180/Math.PI-tr0; //このMCの移動を計算 }; } on (release, releaseOutside) { //この onEnterFrame を削除 delete this.onEnterFrame; }

  • Viual C++ 2010 でエラー

    Visual C++ 2010で学習中の初心者です。 あるサイトにあったWindows Form用のサンプルプログラムを作ってビルドしようとしていますが、link error 1104 というのが出てうまくいきません。 フォーム上に三角関数の値を表示するという簡単なもので、最初にやった時にはできたのですが、表示の書式を少し変更してみたら、このエラーメッセージが出てきてどうしてもビルドできません。 参考にしているサイトは次のものです。 http://ishidate.my.coocan.jp/vcpp10_2/vcpp10_2.htm この中のForm1_Paint() 関数のコードをそのまま入力したのが以下のコードです。 private: System::Void Form1_Paint(System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e) { Graphics^ g = e->Graphics; String^ string1; double radian; g->DrawString(" angle sin cos ", Font,                       Brushes::Black,10,20); g->DrawString("------------------------------ ------", Font, Brushes::Black, 10,35); for(int angle=0; angle<=90; angle += 10) { radian = angle*Math::PI/180.0; string1 = String::Format(" {0,3} {1,7:F7} {2,7:F7} ", angle, Math::Sin(radian), Math::Cos(radian)); g->DrawString(string1, Font, Brushes::Black, 10, 50+angle*2); } }// end function 最初に成功したときのフォームの出力の画面写真を添付してあります。 やりたかったことは String::Format() 関数の{ }の中の数字を変えて表示を確認したかっただけなのですが、このエラーはどうすれば修正できるのか、ご存知の方、どうぞよろしく教えてください。

  • ムービープレビューでないと動きません。

    ゲームを途中まで作ったのですが、ムービープレビューで出力したときにしか動きません。 (他のパブリッシュプレビューや実際にサーバーにUPして見ましたがコントロールがききません)問題があれば教えて頂きたく質問させて頂きました。 どうぞよろしく御願いします。 onClipEvent (load) { _root.target._x=100 speed = 0; rot = -90; dx = 0; dy = 0; } onClipEvent (enterFrame) { _root.target.honou.gotoAndStop(1); if(Key.isDown(Key.SPACE)) {speed +=0.8; _root.target.honou.gotoAndStop(2); } if(Key.isDown(Key.LEFT)){ rot -= 3 this._y +=2} if(Key.isDown(Key.RIGHT)) { rot += 3 this._y +=2} else{ this._y =this._y + 3 } dx = Math.cos(rot * Math.PI / 180) * speed; dy = Math.sin(rot * Math.PI / 180) * speed; speed *= 0.9; _x += dx; _y += dy; _rotation = rot; }

    • ベストアンサー
    • Flash
  • マウスを避けるムービークリップ

    マウスが近づくと逃げるMCを制作しようとしているのですが、 思うようにいかず悩んでいます。 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z という風に並んだそれぞれのアルファベットのMCに マウスが近づくとある一定の範囲の距離を取り、離れると元の場所に戻る… というふうな動きにしたいのです。 今は、 a_mc.onEnterFrame = function () { X=70;//_rootのAのx座標 Y=211;//_rootのAのy座標 var dx = _root._xmouse-this._x; var dy = _root._ymouse-this._y; var kyori = Math.sqrt(dx * dx+dy * dy); var kakudo = Math.atan2(this._y-_root._ymouse,this._x-_root._xmouse); if(kyori<100){ this._x += kyori * Math.cos(kakudo) * 0.05; this._y += kyori * Math.sin(kakudo) * 0.05; this._x = (this._x * 5+X)/6; this._y = (this._y * 5+Y)/6; } }; と記述してマウスと反対方向の動きをさせていますが、 マウスから離れるという動きではないのです…。 分かりづらい説明ですみませんが、ヒントかなにかあれば教えてください。 制作環境は、CS4で、AS2です。

    • ベストアンサー
    • Flash
  • アナログ時計のつくりかた

    お世話になります。 現在アナログ時計を作成しているのですが、 時間を指す針がうまく動いてくれません。 今は、5時代なら5のところを指すだけで、 6時までの中間地点を全く指してくれない状態です。 import java.awt.*; import java.applet.*; import java.util.*; public class tokei extends Applet{ public void paint(Graphics g){ g.drawOval(0,0,150,150); Calendar cal=Calendar.getInstance(); int hr = cal.get(Calendar.HOUR); int min = cal.get(Calendar.MINUTE); int x0, x1, y0, y1, x2, y2, r1=30, r2=45; x0=75; y0=75; x1=75+(int)Math.rint(r1*Math.sin(hr/12.0*2*Math.PI)); y1=75-(int)Math.rint(r1*Math.cos(hr/12.0*2*Math.PI)); g.drawLine(x0, y0, x1, y1); x2=75+(int)Math.rint(r2*Math.sin(min/60.0*2*Math.PI)); y2=75-(int)Math.rint(r2*Math.cos(min/60.0*2*Math.PI)); g.drawLine(x0, y0, x2, y2); } } x1=75+(int)Math.rint(r1*Math.sin(hr/12.0*2*Math.PI)); y1=75-(int)Math.rint(r1*Math.cos(hr/12.0*2*Math.PI)); の部分が間違っているのだろうなと思うのですが、 どのように直せばよいのかわかりません。 恐れ入りますが、どなかた教えて頂けないでしょうか? どうぞよろしくお願いいたします。

  • 3D回転

    中心に球をを置き、その周りを文字をMovieClipにし 3D風に回転させたいと考えております。 第1フレームに"球"のMovieClipインスタンス(こちらは単にMovieClipに変えないと、swapDepthsの処理が出来ないと思い変換しただけです)、その一つ上のレイヤーに文字のMovieClipインスタンス(こちらは、各文字に前記させて頂きましたスクリプトをMovieClipアクションとして記入)を置いております。そして文字のMovieClipインスタンスを、球の後面に向かう時(入る時)にswapDepthsを使い深度を入れ替えてやると、球の周りを回っている感じになるかなと思ったのですが。。イメージとしましては、某有名テーマパーク(US○)に置かれています地球の周りを、ロゴが回っている感じにしたいのですが。。 asは1.0を使用。 MovieClipには以下のスクリプトを記入。 onClipEvent (load) { degree = 330; r = 100; centerx = 640; centery = 110; } onClipEvent (enterFrame) { radian = Math.PI/180*degree ; this._x = centerx+r*Math.cos(radian); this._y = centery+r*Math.sin(radian)/3; this._yscale = this._xscale=this._alpha=this._y; this.swapDepths(0); degree+= 10; } this.swapDepths(0);を用い、深度を入れ替え表現しようとしたのですが、球に回り込むような表現にはなりません。 と、いいますかMovieClipが点滅してしまうのです。 目指しているのは、MovieClipが某有名テーマパークみたく、球に回り込むような感じです。 どうか、宜しくご教授のほどお願い申し上げます。

    • ベストアンサー
    • Flash