これに関する他の問題について、すでにいくつか質問しましたが、ほぼ完了しました。
私は Animate CC でドラッグ アンド ドロップ インタラクションに取り組んでいますが、ほとんど機能しています。ドラッグアンドドロップで認識しますが、ターゲット領域の位置がずれているようです。デモ
私の推測では、私のやり方が正しくないことと関係があると思いますが、globalToLocal()
よくわかりません。これまでのところ、w1
、w2
、h1
の値をh2
変更しても何も変わっていません。
これが交差テスト機能です。ここに基づいた非常に人気のある機能です
function intersect(obj1, obj2){
var objBounds1 = obj1.nominalBounds.clone(); //used nominalBounds for shape in animateCC
var objBounds2 = obj2.nominalBounds.clone();
var pt = obj1.globalToLocal(objBounds2.x, objBounds2.y); //is this what's wrong?
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){
spliceThis(hitTestArray, obj2);
return false;
}
if(pt.y > h2 || pt.y < h1){
spliceThis(hitTestArray, obj2);
return false;
}
if(hitTestArray.indexOf(obj2) < 0){ //Obj2 not found
hitTestArray.push(obj2);
}
return true;
}
obj1
はドラッグ オブジェクト、obj2
はドロップ ターゲットです。私はイーゼルJSに幅と高さがないことを知っているので、それはその一部でしょうか? しかし、それを説明するためにどのようにリファクタリングするかはわかりません。また、多少機能しているので、高さと幅がnullの場合になぜそうなるのかわかりませんか?
私はこれを完全に理解していないだけですか、それとも私は近いですか?