アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。
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);
/////////////////////

お手数ですが何卒よろしくお願い致します。

A 回答 (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
    • good
    • 0
この回答へのお礼

できました!!!

ありがとうございます!!!

お礼日時:2011/03/07 17:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!