• ベストアンサー

flashでインスタンスを斜めに回転させたいときはどうすればよろしいでしょうか??

始めまして。 flashは始めたばかりなのですが。 インスタンスを斜めに回転させるやり方がわかりません。 縦や横なら _xscale などを使って出来るのですが、 どうにもこうにも斜めに動かせません。 分かり難いかもしれないのですが、下記のサイトの ボタンの上にマウスが乗ったときの動きをしたいです。 http://www.sony.jp/cyber-shot/madewith/ 説明がへたくそで申し訳ないのですが、どうか教えてください。 宜しくお願いします。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

ボタンにマウスカーソルが重なった時のエフェクト程度でよければ、難しい計算をしなくても、シェイプトゥイーンで手軽に作れますよ。 次のように考えます。 ひし形から長方形に変化するシェイプトゥイーンのムービークリップを作ります。 このムービークリップをボタンに重ねて配置し、最初は非表示にしておきます。 ボタンにマウスカーソルが重なった時にエフェクトのムービークリップを表示し、ムービークリップのフレーム1から再生します。 マウスカーソルが外れた時はエフェクトのムービークリップを非表示にするのですが、いきなり消えてしまうと不自然ですから、ご提示のサイトの作品のようにフェードアウトで徐々に消していくのが簡単にできる演出だと思います。 ---------------------------------------------------- 作り方の一例です。 お使いの Flash のバージョンが分かりませんが、とりあえず MX ~ CS3 まで、Flash Player 6 以降・ ActionScript は 1.0 で考えます。 ここでは1から全てを説明できません。描画ツールの使い方・基本的な用語・トゥイーンの作り方等は解説書や解説サイト等をご参考になさってください。 まず、エフェクトのムービークリップを作ります。 「挿入」メニュー→「新規シンボル」で、”ムービークリップ”を選びます。 ムービークリップシンボルの編集画面になったら、長方形を1つ、描画します。 適当な長さのフレーム数を空けて、タイムラインにキーフレームを1つ作ります。フレームの数は演出の長さや作品のフレームレート等に応じて加減してください。あまりダラダラ長くしない方が演出のキレがよく、粗も目立ちにくくなります。 最初のキーフレームを選択し、「シェイプトゥイーン」を設定します。設定は「プロパティ」パネルの”トゥイーン”のリストの中にあります。 イージングを設定しても面白いかもしれません。イージングは”アウト”(最初は速く、徐々にゆっくりになる変化)がオススメです。 これだけでは最初と最後が全く同じ形で何も変化しませんので、最初のキーフレームの長方形を「歪曲」の変形ツールでひし形に変形します。「歪曲」変形は、ツールボックスで「自由変形」を選択した時のオプションから選ぶか、長方形を選択している状態で「修正」メニュー→「変形」を選ぶとその中にあります。 ボックスの四隅のハンドルを内側に向かってドラッグすると、角が内側に寄っていきます。右上と左下のハンドルをドラッグして、あまり不格好にならない程度にひし形になるように変形してください。厳密にひし形にならなくても、大体で構いません。 変形ができたら、タイムラインの再生ヘッドをドラッグして、大体のアニメの出来具合を確認してみてください。ひし形が長方形に変わるアニメになっていれば成功です。 ご提示のサイトの作品では、エフェクトが薄表示になっています。これは、最初のひし形と最後の長方形の塗りの色にアルファを設定しておくと簡単です。ひし形と長方形でアルファの数値を変えると、徐々に濃くなるアニメも同時に付けることができます。 レイヤーを1つ追加して、最後の長方形が表示されているフレームにキーフレームを作り、stop(); アクションを記述します。 これで、エフェクトのムービークリップは完成です。 ********************************** 次に、ボタンのムービークリップを作ります。 いろいろな作り方がありますが、ボタンとエフェクトのムービークリップを1つのムービークリップにまとめておくと、後でボタンの位置や大きさを変えたくなった時にも一緒に変更できて便利です。 別のムービークリップシンボルを、もう1つ作ります。 何か適当な絵を描き、この演出を施したい部分に先ほど作ったムービークリップを配置してください。 エフェクトのムービークリップにインスタンス名を付けます。ここでは仮に”eff_clip”とします。 ボタンのムービークリップをステージに配置し、こちらにもインスタンス名を付けます。仮に”btn_clip”とします。 以上で準備は完了です。 次はスクリプトを書きます。 ********************************** スクリプトはメインのタイムラインのフレーム1に記述します。 スクリプト専用のレイヤーを作っておくと便利です。 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください) /****************************************************/  //最初はエフェクトを非表示にしておく  btn_clip.eff_clip._visible = false;  //エフェクトをフェードアウトさせる関数  function Effect_FadeOut()  {   //アルファを下げる   //※速度は適宜変更してください   this._alpha -= 10;   //完全に透明になったら、非表示にして終了   if( this._alpha <= 0 )   {    this._visible = false;    this.onEnterFrame = undefined;   }  }  //マウスカーソルが重なった時の処理  btn_clip.onRollOver = function()  {   //エフェクトを表示し、アルファを戻す   this.eff_clip._visible = true;   this.eff_clip._alpha = 100;   //フェードアウトの演出を削除する   this.eff_clip.onEnterFrame = undefined;   //エフェクトを再生   this.eff_clip.gotoAndPlay( 1 );  };  //マウスカーソルが外れた時の処理  btn_clip.onRollOut = function()  {   //エフェクトをフェードアウトさせる   this.eff_clip.onEnterFrame = Effect_FadeOut;  }; /****************************************************/ 「ムービープレビュー」で動作を確認してみてください。 エフェクトのアニメがおかしい場合はエフェクトのムービークリップシンボル(特にシェイプトゥイーンの設定など)を、マウスを操作しても何も起こらない場合はインスタンス名の誤りなどがないかを確認してみてください。 今回はスクリプトについては詳しくは触れませんが、要するに何をしているかといいますと、  ・普段はエフェクトを非表示にしておく。  ・ボタンにカーソルが重なった時、エフェクトを表示して、エフェクトのフレーム1から再生する。   エフェクトは最後のフレームで止まるようになっているので、アニメが終わったら、   カーソルが重なっている間は長方形がずっと表示される仕組み。  ・カーソルが外れた時は、エフェクトをフェードアウトで徐々に消し、最後は非表示にする。 といった処理を行っています。 ボタンのムービークリップの構成が異なる場合は、ターゲットパスの誤りにご注意ください。 当方は Flash CS4 を持っていないので、詳しくは分からないのですが。 CS4 ではトゥイーンの扱いがこれまでと大きく異なり、従来のいわゆるモーショントゥイーンやシェイプトゥイーンは”クラシックトゥイーン”というカテゴリーに移動してしたそうです。 3D回転のトゥイーンもできるようなので、そちらを使うと正確な回転エフェクトが簡単に作れるかもしれませんね。 いずれにしても、こうしたエフェクトのアニメをムービークリップとして用意しておけば、あとはフレームの操作などの基本的なスクリプトだけで制御できます。ボタンの大きさが違う場合も、ムービークリップを伸縮させるだけで簡単に合わせることができます。 その他の様々なエフェクトも、同様にムービークリップのタイムラインを利用して用意すると便利です。機会がありましたら、ユニークなエフェクトを作ってみてください。

ringo_1
質問者

お礼

有難う御座います(=^▽^=) 教えて頂きました内容でバッチリ動きました。 動きから、スクリプトまで一連の流れを細かく 書いて頂いたので、すごく分かりやすかったです。 本当に有難う御座います。 まだまだ初心者なのですが、がんばっていきます。

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

その他の回答 (1)

回答No.1

対角線で疑似3D的に 回転したいってことですか? ちょっと難しいですよ var W=stage.stageWidth var H=stage.stageHeight //回転するSprite var spr=addChild(new Sprite()) as Sprite //ここは顔かいてるだけ with(spr.graphics){ beginFill(0x55AA55) drawRect(20,20,W-40,H-40) endFill() beginFill(0) drawEllipse(100,100,100,100) endFill() beginFill(0) drawEllipse(350,100,100,100) endFill() beginFill(0) drawRect(100,280,350,30) endFill() } //この関数でsprのマトリックスをいじって斜め回転を表現 function setRad(rad){ var mtr=new Matrix() var D=W*H*(H/W)/(W+H*(H/W))*(1-Math.cos(rad)) with(mtr){ a=(W-D)/W b=D*(W/H)/W c=D/H d=(H-D*(W/H))/H } spr.transform.matrix=mtr } //いざ動かしてみる addEventListener(Event.ENTER_FRAME,frameTick) function frameTick(e){ setRad(getTimer()/50*Math.PI/180) }

ringo_1
質問者

お礼

わざわざ画像まで付けて頂きまして本当に有難う御座います。 今日の朝からがんばっているんですが、まだ時間がかかりそうです。 ほんとへたれでスイマセン。 動くまでがんばってみます^^

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

関連するQ&A

  • FLASHでのアニメーションボタン作成について

    こんばんは。 まだFLASH CS4を触り始めの初心者です。 現在FLASHでサイト製作をしており、ボタンを作成していますが、 マウスダウン時のアニメーションでつまずいています。 マウスアップ時のアニメーションのMC(btn_up)、 マウスオーバー時のアニメーションのMC(btn_over)をそれぞれ作成し、 ボタンインスタンスの「アップ」「オーバー」にそれぞれ割り当てています。 アップ時にはbtn_upのインスタンスが動き、 マウスオーバー時にはbtn_overが動きますが、 マウスダウン時にはボタンが一瞬真っ白になり、 マウスクリックを離すと再びbtn_overが動作します。 ダウン時の指定をしていないので、上記の動きは理解できるのですが、 他のFLASHサイトのアニメーションボタンを触ってみても、 マウスダウン時に画面が白くなることはありません。 再現したい内容として、マウスオーバー時にループして動いている アニメーションをクリックしても、マウスオーバー時のアニメーションが 止まらずに動き続けるというアニメーションにしたいので、 ボタンインスタンスのダウンにマウスオーバー時のインスタンスを 割り当ててみましたが、そうするとマウスダウンした際に アニメーションが最初から再生されてしまいます。 また、ボタンインスタンスでは、「マウスオーバー時にタイムラインの 何番フレームに移動する」という制御ができないようなので、 ActionScriptを使ってボタンと同様の制御をしようと思い、 addEventListenerでそれぞれオーバー、ダウン時の設定をしましたが、 マウスオーバー時にマウスのカーソルがリンクとして認識しません (矢印のカーソルから指のカーソルにならない)。 ターゲットをリンクとして認識させる為のASの記述はあるのでしょうか? 長文となってしまい恐縮です。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • デジカメDSC-HX5とDSC-HX5Vについて

    DSC-HX5に水中ハウジングはありませんが、DSC-HX5Vがあります。 形状が似ているので、使用は可能でしょうか? DSC-HX5:http://www.sony.jp/cyber-shot/products/DSC-HX5V/image.html DSC-HX5V:http://www.sony.jp/cyber-shot/products/DSC-HX5V/image.html どうぞアドバイスを宜しくお願い申し上げます。

  • コンデジで迷っています

    SONYのWX10かパナソニックのFX77のどちらにするか迷っています。 アドバイスお願いします。 http://www.sony.jp/cyber-shot/products/DSC-WX10/ http://panasonic.jp/dc/fx77/

  • フラッシュ

    フラッシュで写真のポートフォリオのウエブサイトを作ろうと思っています。「→」のボタンを作り、クリックすると次のイメージが横からさっと出てくるようにしたいのですが、アクションで作るのでしょうか?動きがなく、ただ写真が変わるだけならできたのですが、動きを入れたいと思っています。分かる方教えてください。

  • デジタルカメラのリセット方法

    Sony Cyber-Shot DSC-F505Vのリセット方法を教えてください。 フラッシュ機能にエラーが出ています。 リセットすると解決できるとの事でしたが、 このカメラにはリセットボタンがないので、 修理センターに出さないとリセットは不可能だそうです。 自分でできるものならやってみたいと思いました。 操作が複雑であるならあきらめます。 どうぞよろしくお願いします。

  • マウスポインタが動かない

    マウスポインタが縦には動くのですが横には動かなくなりました。 光学式ではないです(ボール)。 最初ゴミが原因だと思いボールを取り外してローラーにへばりついてるゴミを除去したのですが、いつもならそれだけで直ったのに今回は余計動かなくなりました。今マウスは縦の動きしかできず、横にも斜めにも動きません。ですが、たまにほんの少し(本当にほんのちょっと)反応を示すときがあります。原因は一体なんなのでしょうか。

  • Flash(ActionScript3.0)

    Flash(ActionScript3.0)でゲーム制作を行っています。 ActionScriptもFlashも最近初めて触れた初心者で、分からないことがたくさん湧いてきて困っています。 よろしければご回答お願い致します。 インスタンスをドラッグすることができる、という要素と、 インスタンスをクリックすると45度回転する、という要素を同時に入れたいのですが、 同時にプログラムを組むとドラッグだけをすることができず、 どうしてもドラッグ後に45度回転してしまいます。 (プログラムのソースはネットから拾ってきたものです)。 どうすればドラッグと回転を分けることができるのでしょうか。 プログラム自体は以下のように組みました。 ご回答いただければ嬉しいです。 よろしくお願い致します。 //インスタンスの回転プログラム mc1.addEventListener(MouseEvent.CLICK, kaiten); function kaiten(event:MouseEvent) { mc1.rotation += 45; } //インスタンスのドラッグプログラム //インスタンスの0点からのマウス座標用変数 var mc1X:int; var mc1Y:int; //マウスがインスタンスを押したらsec1開始 mc1.addEventListener(MouseEvent.MOUSE_DOWN,sec1); //sec1 マウスダウン座標確認、sec2開始 function sec1(event:MouseEvent):void { mc1X = event.localX; mc1Y = event.localY; addEventListener(MouseEvent.MOUSE_MOVE,sec2); } //sec2 インスタンス移動 function sec2(event):void { mc1.x = mouseX-mc1X; mc1.y = mouseY-mc1Y; //低FPSマウス移動スムーズ対応 event.updateAfterEvent(); } //マウスが離れたらsec3開始 stage.addEventListener(MouseEvent.MOUSE_UP,sec3); mc1.addEventListener(MouseEvent.MOUSE_OUT,sec3); //sec3 sec2停止 function sec3(event):void { removeEventListener(MouseEvent.MOUSE_MOVE,sec2); }

  • マウス操作で回転と平行移動の両方を

    マウスドラッグで平行移動はビヘイビアからも選べますね。勿論、スクリプトを書いても良いけど。でも、マウス操作で回転と平行移動の両方の動きをさせたいです。フラッシュのスクリプトで可能でしょうか? 可能であれば、どう書けばよいでしょうか?教えてください!

  • Flash以外のやり方で・・・

    はじめまして。 参考サイト http://www.chintai-alive.jp/index.html 上記サイトにあるようなボタンの上にマウスが乗ると、 横に吹き出しが出て、そこからリンクで別ページへ飛べる。 というやり方をFlash以外で教えてください。 Flash非対応デバイス用につくる為、Flashを使うことができません。 Javascript、AjaxなどFlash以外ならばなんでもOKです。 「Javascript 吹き出し」などで調べたのですが、 どうも作り方が分かりません。 当方、html、cssはある程度理解しておりますが、 Jajascript、Ajaxなどは初心者でございます。 参考サイトなどありましたら教えてください。 すいませんが、大至急の回答をお待ちしております。 よろしくお願いします!

  • 手持ち夜景に強いデジカメを探しています。

    今、F900EXRを使っているのですが、手持ちで夜景を撮るとぶれてしまいなかなかうまく撮れません… そこで、手持ちでも夜景を綺麗に撮れ、できればシャッタースピードも速いカメラがあれば教えていただきたいです。 夜のイルカのショーやディズニーランド等の夜のパレードを綺麗に撮りたいと思っています。 メーカーにこだわりはなく、値段としては上限6万位でお願いしたいです。 今候補としているのがDSC-HX90V http://www.sony.jp/cyber-shot/products/DSC-HX90V/か DSC-WX500 http://www.sony.jp/cyber-shot/products/DSC-WX500/です。 ファインダーはいらないのですがステップズームに惹かれ迷っています。 他にもおすすめなどあればぜひ教えていただきたいです。 よろしくお願いします。