• 締切済み

ステージ上でドラッグしたら回転する仕組みについて

flashとactionscript初心者です。 AS3.0を利用してステージまたは背景画像上でドラッグをすると ドラッグした距離に応じてその場で回転をするmcというオブジェクトを 作りたいのですが、どのようにすればよいでしょうか。 調べても類似のものが無く困っています。 説明が下手でわかりにくいとは思いますがご回答よろしくお願いします。 ※添付画像の指の部分はマウスカーソルとして考えてください 作業環境 Adobe Flash Professional CC

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

みんなの回答

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

これは,,, 説明の[例]が悪すぎて回答しにくいですね。。。  ◎ …MC(反時計回り)  → …マウスカーソルの動き ここまで "だけ" は理解できました。 しかし,  ◎  ← こんなときは MC を時計回りに回転させるのか? それとも MC を回転させないのか? また,  →  ◎ こんなときは MC を反時計回りに回転させるのか? それとも MC を時計回りに回転させるのか? また,  ◎↑ こんなときや  ↓◎ こんなときは MC を回転させるのか? それとも MC を回転させないのか? 以上のように色々な場合が考えられます。 とにかくスクリプトは 「そうなるように狙って考える」のです。 したがって今の状態では回答不可能か, スイカ割りのような当てずっぽうの回答しかできません。 ◎ 以下は当てずっぽう回答例です。 仮に マウスカーソルの位置には関係なく マウスカーソルの横向き方向のドラッグのみに対応して 右にドラッグすれば反時計回りに MC を回転させ 左にドラッグすれば時計回りに MC を回転させる。 というものとします。 MC には, ご質問の添付図にあるように 「mc」というインスタンス名が命名されていたとします。 また「mc」の "基準点(+印)" は 回転させたい位置(中央)にあるものとします。 その場合の タイムラインのフレームに書くスクリプト例です。 import flash.events.MouseEvent; //回転する割合を指定する変数 var rotate_rate:Number = 0.5; //ドラッグ開始座標を記録しておく変数の宣言 var start_x:Number; //回転終了時の回転角を記録しておく変数の初期化 var start_r:Number = mc.rotation; //マウスダウン時に関数 startRotation を実行 stage.addEventListener(MouseEvent.MOUSE_DOWN,startRotation); //関数 startRotation の定義 function startRotation(e:MouseEvent):void { //マウスダウンした座標を記録 start_x = stage.mouseX; //mc の回転角を記録 start_r = mc.rotation; //マウスムーブ時に関数 rotateMC を実行 stage.addEventListener(MouseEvent.MOUSE_MOVE,rotateMC); //マウスアップ時に stopRotation を実行; stage.addEventListener(MouseEvent.MOUSE_UP,stopRotation); } //関数 rotateMC の定義 function rotateMC(e:MouseEvent):void { //mc を回転させる mc.rotation = start_r-(stage.mouseX-start_x)*rotate_rate; } //関数 stopRotation の定義 function stopRotation(e:MouseEvent):void { //マウスムーブ時に実行する関数を解除 stage.removeEventListener(MouseEvent.MOUSE_MOVE,rotateMC); //マウスアップ時に実行する関数を解除 stage.removeEventListener(MouseEvent.MOUSE_UP,stopRotation); } これでムービーブレビューさせるとか パブリッシュすれば動作確認ができるかと思います。 なお, もし縦向きドラッグにも対応させるとか, その回転角度もキッチリとマウスの回転角に合わせるとか言うような場合は Math.atan2() などが必要になると思います。 数学的にハイレベルになり,高校数学の三角関数の理解は必要になります。 (上のスクリプトは小学算数か中学校1年生レベルの数学しか使っていません。) 「【Flash】Math.atan2で角度を求めるWonderfl-独学ActionScript」 http://d.hatena.ne.jp/ActionScript/20090409/as3_math_atan2 「chicken hearted signaler=[AS3]マウス座標との回転角度を計算。」 http://chsignaler.blog.fc2.com/blog-entry-7.html

関連するQ&A

  • ドラッグで、mcの大きさを等倍に変形したい

    お世話になります。 actionscript 3.0 で作成しております。 stageの上に四角形の形をしたmc1があります。(画像的な物です。) そのmc1の右下の隅にmc2があります。 mc2をドラッグして、移動すると、mc1が 等倍で拡大・縮小 するような動きにしたのですが、どのようにすればよろしいでしょうか? お手数ですが何卒よろしくお願い致します。

  • FLASHに配置した画像からのリンク。

    FLASH初心者であることから、初歩的な事をお尋ねします。 現在ADOBE Flash Professional CCを使ってFLASHを作成しています。 ステージに読み込んだ自作のjpg画像に、他のページ(同一サイト内または、他サイト等)へのリンクを設置したいのですが、方法が分かりません。どなたか教えて頂けないでしょうか? 環境はWin 8.1、ActionScriptは3.0です。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • オブジェクトの回転について

    FlashCS5 ActionScript3.0を使っています。 Flash上で、MovieClipでオブジェクトを作り、それをStage上で回転させたいのですが、 rotationプロパティで何度回転させるかはわかるのですが、 どこを基準に(どこを回転軸に)の、基準点の設定方法を教えていただけないでしょうか。 3Dではなく、平面です。 (たとえばX座標=100, Y座標=250を起点に回転させる場合など) 以上、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • flash  ドラッグでの細かい移動制限

    お世話になります。flashとactionscriptの初心者です。 マウスでオブジェクトをドラッグしたとき、そのオブジェクトが別のオブジェクト(壁)をすり抜けないようにするための方法を探しています。(手書き絵を参照ください)。 作りたいものは、オブジェクトをドラッグして迷路を進ませるようなイメージです。 「オブジェクトをドラッグで動かして、壁に当たるとゲームオーバー」のような迷路のゲーム(イライラ棒みたいなもの)はたくさん見つかるのですが、自分が作りたいのは「壁に当たったらその場で止まる」「その場から(何事もなかったのように)ドラッグし直して動かせる」というものです。時間をかけて調べたり探したりしてみたのですが分からず途方に暮れています。 actionscriptは2.0での作成で考えていますが、3.0でもかまいません。初心者で質問の仕方もわかりにくく申し訳ないのですが、どうぞご教授よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ゴミ箱のようなflashを作りたい

    actionscript初心者です(1.0か2.0) flashは CS4 を使ってます ステージにいくつかのオブジェクトと、3つの箱がある ↓ 任意のオブジェクトを1つドラッグして、任意の箱にドロップ ↓ 箱がふくらむ ※1つの箱に入るオブジェクトは1つまで といった感じのflashを作りたいのです オブジェクトのドラッグはなんとか書けますが、 箱の上でオブジェクトが消え、箱がふくらんだ箱に変わるところなどがわかりません・・・ いいサンプルなどご存知でしたら教えてください!

    • ベストアンサー
    • Flash
  • ステージの背景色が変更できません。

    はじめまして、よろしくお願いします。 行き詰ってしまったので投稿させていただきました。 Flash初心者です。 環境はFlash MX Professional2004 バージョン7.0.1です。 OSはWin XPです。 質問ですが、ステージの背景色が何回変更しても変わりません。 サイズの変更はされます。ですが、背景色だけは変わらないのです。 なにか設定をしなければいけないのでしょうか? ちなみに、ムービープレビューで見ると背景色は反映されています。 それから、図形を描いたとき、塗りつぶしの色もステージ上では反映されておらず、 こちらもムービープレビューでは反映されています。 何故このようなことが起こるのか初心者なので全くわからず、 よろしければご教授願います。

    • ベストアンサー
    • Flash
  • ステージの表示が固定されてしまう

    WinXP、FLASH MX2004Proを使用しています。 FLASHのソフト自体の操作に関する質問なのですが、 ウィンドウの中央にステージが表示されていたのですが、 なにをどうしたのか、ステージが常に左上に表示されるようになってしまいました。 定規を表示すると、0,0が左上に固定されて、そこにステージがくっついてしまっているのです。 だから、左側ステージ外においてあるオブジェクトが表示されません。MCの識別用にラベルをつけたりしていたので、左側が見えないと大変不便です。 試行錯誤してみたのですが、わかりません。 わかりにくいとは思うのですが、どなたか解決方法をご存知ではないですか?

    • ベストアンサー
    • Flash
  • 画面をドラッグ

    ActionScript3.0で画面をドラッグして移動させるflashを作っています。 マウスを離してからも少しだけ動くように*2.75しています。 しかしhoge_mcが画面外に出た時にif文やflagを使って止めようとすると進む力が残っているっぽくて確実に止まってくれません。 どなたかこの問題の解決法が分かる方いませんか? *ソースです。(ステージにhoge_mcを置けば動きます。) import caurina.transitions.Tweener; var startX:Number = 0; var cameraRange:Number = 0; var tweenNum:Boolean =false; this.stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown); this.stage.addEventListener(MouseEvent.MOUSE_UP, onUp); function onDown(event:MouseEvent):void { tweenNum = false; this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); startX = event.stageX; this.stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onUp(event:MouseEvent):void { this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove,false); } function onMove(event:MouseEvent):void { trace(hoge_mc.x); if(tweenNum == true){ Tweener.removeTweens(hoge_mc); return; } var cameraIkata = event.stageX - startX; hoge_mc.x += cameraIkata; cameraRange = cameraRange + cameraIkata; Tweener.addTween(hoge_mc, {x:cameraRange*2.75, time:3, transition:"easeOut"}); startX = event.stageX; } stage.addEventListener(Event.ENTER_FRAME,loop); function loop(e:Event):void { if (hoge_mc.x > 401) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 400.5; } if (hoge_mc.x < 0) { tweenNum = true; Tweener.removeTweens(hoge_mc); hoge_mc.x = 0.5; } }

  • オブジェクトを上下方向のみにドラッグさせる方法

    FLASH初心者です。オブジェクトを左右に動かさず、上下方向のみにマウスでドラッグさせるにはどういった方法があるでしょうか。 一応、自由にドラッグできるところまでは作れたのですが、移動方向を上下に限定させる事ができません。 使用ソフトはFlash Professional 8(WinXP)です。 よろしくお願いします。

  • ステージの背景画像のみ拡大縮小対応

    こんばんは。 いつもお世話になります。 現在FLASHでサイトを作成していますが、以下サイトのように、 ブラウザサイズを変更すると背景の画像はリサイズされますが、 真ん中にあるメニューを含めたオブジェクトはブラウザサイズを 変更してもリサイズされないようなものを作りたいと考えています。 http://www.minus.dk stage.scaleModeにNO_BORDERを指定すれば背景画像はリサイズされますが、 他のオブジェクトもリサイズされてしまいます。 何か良い方法はないでしょうか? ご教授宜しくお願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう