四角形の端っこをドラッグしたらその四角形を回転させたい。
お世話になります。
Flash Basic 8で作成しております。
大変初歩的なことで申し訳ございませんが、まだ、知識不足で、
私が実現したい事が載っているサイトが見つけれなかったので、
ここで質問させて下さい。
私が、つくりたいFlashは、
(1)四角形があって、四角形をクリックし続けてマウスを移動させたらその四角形が移動
(2)四角形の頂点にマウスがいったら回転マークに変わる
(3)(2)の状態でクリックし続けて、マウスを動かしたらそれに合わせて、四角形が回転する。
を実現したいのです。
(1)については、
on(Press){ this.startDrag(false);}
on(release){this.stopDrag();}
で実現できたのですが、(2)と(3)がわかりません。
大変申し訳ございませんが教えて頂けないでしょうか?
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
#1です
_rootのステージ上にインスタンス名 cursor_mc というMC(ムービークリップ)と sq_mc というMCを配置し
sq_mc の中にインスタンス名 corner_btn0,corner_btn1,corner_btn2,corner_btn3,sq_btn というボタンを用意した場合
_root の フレーム に書くスクリプト例↓
--------------
//cursor_mcを非表示
cursor_mc._visible = false;
//corner_btnを押したかどうかのフラグを用意
press_flg = false;
//sq_mc内のsq_btnを押したとき
sq_mc.sq_btn.onPress = function() {
//sq_mcをドラッグを開始
sq_mc.startDrag();
};
//sq_mc内のsq_btnを放したとき
sq_mc.sq_btn.onRelease =
sq_mc.sq_btn.onReleaseOutside = function () {
//sq_mcのドラッグを終了
sq_mc.stopDrag();
};
//ボタンに関してのループ
for (i = 0; i <= 3; i++) {
//sq_mc内のcorner_btn○にロールオーバーしたとき
sq_mc["corner_btn" + i].onRollOver = function() {
//マウスが動いたときの動作を定義
sq_mc.onMouseMove = function() {
//本物マウスを非表示
Mouse.hide();
//cursor_mcを表示
cursor_mc._visible = true;
//cursor_mcをマウスの座標に移動
cursor_mc._x = _xmouse;
cursor_mc._y = _ymouse;
//corner_btnを押したかどうかのフラグがtrueであれば
if (press_flg) {
//sq_mcの基準点からのマウス座標を取得
rx1 = _xmouse - sq_mc._x;
ry1 = _ymouse - sq_mc._y;
//sq_mcの回転を計算
sq_mc._rotation = (Math.PI / 2 + Math.atan2(ry1, rx1)) * 180 / Math.PI - tr0;
}
//表示を即更新
updateAfterEvent();
};
};
//
//sq_mc内のcorner_btn○を押したとき
sq_mc["corner_btn" + i].onPress = function() {
//corner_btnを押したかどうかのフラグをtrueにする
press_flg = true;
//sq_mcの基準点からのマウス座標を取得
rx0 = _xmouse - sq_mc._x;
ry0 = _ymouse - sq_mc._y;
//sq_mcの基準点とマウスとの距離を算出
td0 = Math.sqrt(rx0 * rx0 + ry0 * ry0);
// マウスによる回転の差分を算出
tr0 = (Math.PI / 2 + Math.atan2(ry0, rx0)) * 180 / Math.PI - sq_mc._rotation;
};
//
//sq_mc内のcorner_btn○を放したとき
sq_mc["corner_btn" + i].onRelease = function() {
//corner_btnを押したかどうかのフラグをfalseにする
press_flg = false;
};
//
//sq_mc内のcorner_btn○からアウトしたとき
sq_mc["corner_btn" + i].onRollOut =
sq_mc["corner_btn" + i].onReleaseOutside = function () {
//本物マウスを非表
Mouse.show();
//cursor_mcを非表示
cursor_mc._visible = false;
//corner_btnを押したかどうかのフラグをfalseにする
press_flg = false;
//マウスが動いたときの動作を削除
delete sq_mc.onMouseMove;
};
}
-----------
字数制限いっぱい
No.1
- 回答日時:
四角形の端っこ(頂点) とは何か。
人間ですらわからないので
PCにはもっとわかりませんね。
もっとも 四角形の端っこ(頂点) を 1px たりとも違わず選択できるものであれば
人間にもPCにも その 端っこ(頂点) とやらが理解できると思います。
現実的にそんなことは無理なので
「その辺がだいたい 端っこ(頂点) だよ」
というのを定義する必要があります。
例えば (あくまでも例えば)
四角形ムービークリップ 内の頂点付近に
透明な○の塗りでも描いて
それを ボタン に変換するとか。
そうすれば
その 透明な○の塗り を人間が選択できることも可能になると思いますし、
PC だって その 透明な○の塗り のボタンを プレスしたかどうかも PC が判断できます。
四角形の端っこ(頂点) とは何か が
人間的にも PC的にも 定義できたとすれば
回転 などの動作を指示できると思います。
四角形の端っこ(頂点) は関係がありませんが
回転 部分の参考にはなると思います。
「ドラッグ&ドロップ5種」
http://suzupara.iinaa.net/drag.html
(説明で使われたり配布されているているものは
Adobe(Macromedia) Flash 用のサンプルではありませんが
ActionScript 自体は 共通で使えます。)
上記ページの 「王」 や 「飛車」 のように
Math.atan2 を使う必要があると思います。
Math.atan2 をもっと深く知るには次のページなどがよろしいかと。
「角度と座標の計算 - Flash の三角関数を使う」
http://kb2.adobe.com/jp/cps/228/228615.html
「Flashゲーム講座&ASサンプル集【狙撃の計算方法について】」
http://hakuhin.jp/as/shot.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 数学の質問です。 円に内接する四角形ABCD において, AB=2, BC = 1, CD = 3, 3 2023/04/18 18:28
- 高校 数学Aの問題で、円に内接するN角形(N>4)の対角線の総数は ア 本である。また、Fの頂点三つからで 1 2023/04/13 17:47
- 数学 四角形の角度のことで聞きたいです。 円に内接する四角形は外角と対角が等しいと学んだ気がするんですが、 5 2022/07/27 05:52
- 数学 数学B 私の回答はあっていますか? A(1,3), B(2,5), C(6,8), D(5,6), 8 2022/05/22 00:55
- 数学 円に内接する四角形が出てくる証明(添付した写真のような三角形)の時に、 円に内接する四角形の外角はそ 1 2022/06/04 01:19
- Illustrator(イラストレーター) イラストレーターで添付画像のような五角形を簡単に作る方法を教えてください 3 2022/10/30 15:14
- ルーター・ネットワーク機器 NTTから借りたルーターに繋がっている線 6 2023/02/26 23:28
- 数学 四角形CEDFはある円に内接することを示せ。 という問題で答えは 〜よって四角形CEDFはEFを直径 2 2022/06/04 18:48
- 数学 数的推理の解答解説でわからないことがあります。 解説中に『△CFQと△CGRは相似。CR=RQで、四 3 2022/04/02 23:26
- 掃除・片付け リビングの天井にある蛍光灯を使った四角い枠の電気から、丸形のLEDの電気に変えました。 それまで四角 3 2022/12/26 13:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
以下のActionScriptをスッキリ...
-
Flashからリンクする際のconfir...
-
Flashで外部jpgファイルをmcに...
-
プログラミング、アーキテクチ...
-
photoshopで書いた四角の枠の中...
-
else if文の順序を変えることに...
-
五芒星は、悪魔崇拝とどういう...
-
ExcelでVBAを利用してオートシ...
-
C言語でのマウスを移動とマウス...
-
RPG(AS400)の本、サイトってあ...
-
node* ってなんなのでしょうか?
-
HTMLのtextbox類に文字を残す
-
VB6.0 でメニューを作りたいん...
-
UWSCのBTN関数について。
-
YOASOBI
-
Motifのイベントの制御について...
-
AS3.0 読み込んだ外部テキスト...
-
【VB.NET】別Formのボタンが押...
-
マスクにグラデーションをかけ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
テキストファイルから読み込ん...
-
外部SWFファイルを再生バーでコ...
-
AS3 mc0~5をまとめて処理する
-
エンドロール風テキストの表示...
-
ロールオーバーで下画像を表示...
-
看護師です。体温表のマクロを...
-
縦横比率のを変えずに画像のサ...
-
photoshopで書いた四角の枠の中...
-
YOASOBI
-
VBScriptでMsgBoxのYesNoボック...
-
プログラミング、アーキテクチ...
-
python ボタンを押すと複数の関...
-
別のアプリケーションのテキス...
-
テキストボックスの中身をリセ...
-
テキストボックスにセルの値を...
-
五芒星は、悪魔崇拝とどういう...
-
else if文の順序を変えることに...
-
変数に256文字以上のテキストを...
おすすめ情報