![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
Actionscript 3.0で作成しております。
点ABCがあり、点Bをモーショントゥイーンで横に動かしています。
下記のActionScriptで点ABCを結んだ三角形を表示しているのですが、
点Bをモーショントゥイーンで動かしても三角形が変化してくれません。
希望する形としては、点Bが動く度に、三角形ABCを書き直す(?)
Bが移動した形になって欲しいのですがどのようにしたらよいでしょうか?
/////////////////////
import flash.display.Shape;
var shape:Shape=new Shape();
shape.graphics.beginFill(0xFF0000);
//頂点の座標
var vertices:Vector.<Number>=Vector.<Number>([点A.x,点A.y,点B.x,点B.y,点C.x,点C.y]);
shape.graphics.drawTriangles(vertices);
shape.graphics.endFill();
addChild(shape);
/////////////////////
お手数ですが何卒よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
点Aや点Bや点Cは
それぞれ「A_mc」「B_mc」「C_mc」というインスタンス名を付けたムービークリップであったとします。
その場合の "フレームに" 書くスクリプト例です↓。
==============================
import flash.display.Shape;
//---Shapeは先に作成&配置---
var shape:Shape=new Shape();
//(↓状況が不明ですが一応元のままで)
shape.x=200;
shape.y=100;
addChild(shape);
//毎フレーム時間 関数 makeTriangle を実行
addEventListener(Event.ENTER_FRAME,makeTriangle);
//関数 makeTriangle の定義
function makeTriangle(e:Event):void {
//(前のフレーム時間で)描画したものを消す
shape.graphics.clear();
//頂点の座標
var vertices:Vector.<Number> = Vector.<Number>([A_mc.x,A_mc.y,B_mc.x,B_mc.y,C_mc.x,C_mc.y]);
//三角形の赤い塗りを描画
shape.graphics.beginFill(0xFF0000);
shape.graphics.drawTriangles(vertices);
shape.graphics.endFill();
}
==============================
Event.ENTER_FRAME の箇所で
「毎フレーム時間」 と書いていますが
これは 「1フレーム進む時間ごとに毎回」 という意味です。
なお,
スクリプトを書いたタイムラインを "ループ再生させる" 場合
上記のスクリプトが何度も実行されると Shape が重複出没して変になります。
また
何度も同じスクリプトを実行させるのは無駄ですから
仮にフレーム1に上のスクリプトを書いた場合,
最終フレームなどには
==============================
//1フレーム分タイミングを後にずらして
//gotoAndPlay(2) を実行
addEventListener(Event.ENTER_FRAME, function():void {
gotoAndPlay(2);
removeEventListener(Event.ENTER_FRAME, arguments.callee);
}
);
==============================
のようなことを書いて,
フレーム1が何度も表示されないようにする必要があります【図↓】。
(スクリプトを フレーム1 に書くのではなく
ドキュメントクラスを使った場合は
この辺の気配りや細工は要りませんが。)
逆に,
タイムラインを最終フレームなどで止めて "ループ再生させない" 場合
三角形の描画が継続したままだと無駄(CPUなどの無駄遣いになるだけ)ですから
再生を停止させるフレームに次のように書いて
ENTER_FRAME イベントでの関数実行を停止させるようにした方が良いです。
===========================
stop();
//毎フレーム時間 makeTriangle が実行されるのを取消
removeEventListener(Event.ENTER_FRAME,makeTriangle);
===========================
![「三角形ABCのBを可変にしたい」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/8/1373636_5497e898e64f4/M.jpg)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 写真についてですが、 なぜ、角QOH=60°となるのですか? ・△ABCは正三角形 ・点MはBCの中 3 2022/12/23 10:55
- 数学 ちょっと質問です。 三角形を適当に書いて上から左回りABCと三角形を作るとして、辺ABの中点をEとし 4 2022/07/24 04:05
- 数学 点Oを中心とし、半径が5である円Oがある。この円周上に2点A、B をAB=6となるようにとる。また、 5 2023/08/16 23:32
- 数学 三角形ABCの辺BCを4 : 3に内分する点をTとし、点Tを接点として辺BCに接する円が点Aで直線A 3 2023/02/12 21:03
- 大学・短大 三角形ABCにおいてBCの中点をM、AB>=ACとする。この時AからBCに下ろした垂線とBCとの交点 1 2023/05/10 20:20
- 数学 AB=2,BC=3,∠ABC=60°の三角形がある。 点Aから辺BCに垂線を下ろし辺BCとの交点をD 4 2023/02/02 15:55
- 中学校 直角三角形ABCがあり、 ∠A=90度、 ∠B=60度、∠C=30度の時、 3点、A、B、Cを通る円 2 2022/05/19 18:52
- 数学 下の図のように大中小の3つの円と大円上の点Aが与えられている。 この時、点Bを中円上、点Cを小円上に 2 2023/08/12 23:13
- 数学 半径6の円Kを底面とする半球がある。半球の底面に平行な平面が半球と交わっており、交わりの円Lの半径は 6 2022/06/24 06:34
- 数学 数学の問題の解き方を教えて下さい。 ∠Aが直角の直角三角形ABCで、∠Bの二等分線と辺ACとの交点を 7 2022/05/06 21:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
arduino プログラムについて
-
potplayerについて質問です
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
ad or script について
-
Flashplayerの運用について
-
VBAのコンボボックスの年月表示...
-
Adobe Flash Player
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三角形ABCのBを可変にしたい
-
外部ムービー読込み後 AS が...
-
Flash ドラック&ドロップ 色の...
-
paraflaのアクションスクリプト...
-
mcのスクロール
-
AS3.0でムービークリップ制御
-
FlashのMCに複数の動作を...
-
Flash lite 1.1で待受け作成
-
ムービークリップを1コマ飛し...
-
【AS3.0】Timerとタイムライン
-
FLASH LITE1.1 制限時間を任意...
-
オンマウスでモーションを停止...
-
関数を順番に実行したい AS3
-
FLASHの同一タイムラインで、複...
-
actionscript3.0で親階層にある...
-
AS3でムービークリップ再生・早...
-
as3.0でのフレーム移動制御のス...
-
AS3.0でComboBox
-
フレーム内に移動したい
-
【C#】wavファイルの複数同時再生
おすすめ情報