フラッシュでいくつかの写真を移動する必要があります。そのため、メインの MovieClip (Loader クラスで取得) に背景画像があります。画像の中に長方形があります。この四角形に小さな画像を入れて動かしてみます。長方形の境界を越えている間、小さな画像がゆっくりと消える必要があります。別のムービークリップを長方形に配置して、このムービークリップの画像を移動しようとしました。しかし、長方形を横切っている間、画像は消えませんでした。映像は消えることなく、ただ動き続けた。長方形の境界を越えているときに画像を消すにはどうすればよいですか? 私の英語でごめんなさい。
質問する
266 次
1 に答える
1
TweenLiteを取得します。アニメーションを簡単にするアニメーション「トゥイーン」ライブラリです。他にもありますが、私が使っているのはこれです。
画像と長方形の重なりを移動して検出するために使用する方法によって異なります。
2 つの正方形 (赤い正方形と青い正方形) があり、青い正方形と重なるたびに赤い正方形をフェードアウトさせたいとします。これは、マウス、キーボード、または日食を保証する事前に計算された動きで制御されますか? フェードはオーバーラップのパーセンテージの要素ですか、それとも青い四角に接触した瞬間の 0 から 100 への直線的な移行ですか? あなたのコードが何をすることを期待しているかについて、あなたが与えた説明からは明らかではありません。SO の「質問」セクションを確認して、質問の質を向上させ、探している正しい回答を得られるようにしてください。
とはいえ、問題を解決する方法の 1 つを次に示します。
import com.greensock.*;
// Create some sample red & blue squares
var red:Sprite = new Sprite();
red.graphics.beginFill(0xFF0000, 1);
red.graphics.drawRect(0, 0, 100, 100);
red.graphics.endFill();
addChild(red);
stage.addEventListener(MouseEvent.MOUSE_MOVE, updateRed);
var blue:Sprite = new Sprite();
blue.graphics.beginFill(0x0000FF, 1);
blue.graphics.drawRect(0, 0, 100, 100);
blue.graphics.endFill();
addChild(blue);
blue.x = 200;
blue.y = 100;
var overlap:Boolean = false; // global state tracker
function updateRed(e:MouseEvent):void {
// Position the red square every time the mouse moves
red.x = stage.mouseX - red.width/2; // center relative to red square's dimensions
red.y = stage.mouseY - red.height/2;
if (red.hitTestObject(blue) && overlap != true) {
// Make sure we only animate on the initial overlap
overlap = true;
TweenLite.to(red, 1, {alpha:0});
} else if (red.hitTestObject(blue) == false && overlap) {
// And converserly, on the initial exit
overlap = false;
TweenLite.to(red, 1, {alpha:1});
}
}
于 2013-07-25T05:33:45.383 に答える