Я пытаюсь сделать перетаскивание, но это доставляет мне кучу проблем. Исправляю одно, появляется другое. У меня он работал там, где он увидит, попадет ли какая-либо часть моего перетаскиваемого объекта в целевую область, но я хотел, чтобы он распознавал только одну часть (это изображение заостренного термометра, и вы не можете измерить температуру головой в реальной жизни). ) демонстрация здесь.
Ошибка, которую я получаю, заключается в том, что «Uncaught TypeError: Cannot read property 'drag' of undefined» (я пометил «drag» в демоверсии, но это дочерний мувиклип внутри объекта перетаскивания)
кроме того, «термометр» и «перетаскивание» являются именованными экземплярами мувиклипов.
Код:
var dragger = this.thermometer;
//tried this to see if it would help
var tip = this.thermometer.drag;
var right = this.targetRight;
var wrong = this.targetWrong;
Для его перемещения:
dragger.on("pressmove", function(evt){ evt.currentTarget.x = evt.stageX; evt.currentTarget.y = evt.stageY; if(intersect(tip, right)){ evt.currentTarget.alpha=0.2; } else if(intersect(tip, wrong)){ evt.currentTarget.alpha=0.7; } else{ evt.currentTarget.alpha=1; } stage.update(evt); }, this);
Для его выпуска
dragger.on("pressup", function(evt){ //lock position of drag object and play animation if any dragger.x = dragger.x; dragger.y = dragger.y; if(hitTestArray.length > 1){ dragger.alpha = 1; stage.update(evt); }//else{ if(intersect(tip, right)){ //Intersection testing for good (also tried 'dragger.drag' to see if that would work. it didn't) alert("YAY you're right AND it works!"); dragger.alpha = 1; }else if(intersect(tip, wrong)){ //intersection Testing for bad alert("BOO its wrong, but YAY it works"); dragger.alpha = 1; } stage.update(evt); //} }, this);
ОБНОВЛЕННЫЙ ИНТЕРСЕКТ:
для проверки перекрестка.
function intersect(obj1, obj2){ var objBounds1 = obj1.nominalBounds.clone(); var objBounds2 = obj2.nominalBounds.clone(); 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; }
Подводя итог, мне нужно знать, как сделать его не неопределенным, чтобы я мог проверить, находится ли этот маленький ящик в одном из больших ящиков.