ムービー クリップ シンボルを使用して、Animate CC でドラッグ アンド ドロップ インタラクションを構築しようとしています。目標は、ドロップ エリアにドロップされたときにアニメーション化することです。私は見ましたが、そのためのスプライトシートを実装していませんが、それは良い考えのようです.
ただし、私の質問は、ドロップが発生したときにドロップを認識させることに基づいています。これを取得するまで、スプライト シートのアイデアをテストすることはできません。Animate CC やその他のオブジェクトでシンボルを処理するためにこれを編集しているだけの、こちらのようなチュートリアルをたくさん見てきました。かなりうまくいきましたが、ドロップではうまくいきません。ドラッグ可能なものをうまく拾うことができますが、マウスを離してもマウスを離すことができません。
dragger
私がドラッグしようとしているアニメーションのシンボルです(それが明らかでない場合に備えて)。
dragger.on("pressmove", function(evt){
evt.currentTarget.x = evt.stageX;
evt.currentTarget.y = evt.stageY;
stage.update(evt);
});
この部分は、私が思う問題を引き起こしているものです:
//refuses to release. doesn't recognize it.
dragger.on("pressup", function(evt){
//lock position of thermometer and play stabby animation
dragger.x = dragger.x;
dragger.y = dragger.y;
if(intersect(evt.currentTarget, this.targetRight)){ //Intersection testing for good
alert("YAY you're right AND it works!");
}else if(intersect(evt.currentTarget, this.targetWrong)){ //intersection Testing for bad
alert("BOO its wrong, but YAY it works");
}
stage.update(evt);
});
次に、交差するための私のコード(ドロップ領域上にあるかどうかを確認するため):
function intersect(obj1, obj2){
var objBounds1 = obj1.getBounds().clone();
var objBounds2 = obj2.nominalBounds.clone(); // <-----Changed this line
var pt = obj1.globalToLocal(objBounds2.x, objBounds2.y);
var h1 = -(objBounds1.height / 2 + objBounds2.height);
var h2 = objBounds2.height / 2;
var w1 = -(objBounds1.width / 2 + objBounds2.width);
var w2 = objBounds2.width / 2;
if(pt.x > w2 || pt.x < w1) return false;
if(pt.y > h2 || pt.y < h1) return false;
return true;
}