我正在尝试进行拖放,但它给了我很多问题。我修复了一个,另一个出现了。我让它工作,它会查看我的拖动对象的任何部分是否进入目标区域,但我希望它只识别一个部分(这是一个尖温度计的图形,你不能在现实生活中用头部测量温度)演示在这里。
我得到的错误是“未捕获的类型错误:无法读取未定义的属性'拖动'”(我在演示中标记为“拖动”,但它是拖动对象内的子影片剪辑)
此外,“温度计”和“拖动”都是电影剪辑的命名实例。
编码:
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; }
总而言之,我需要知道如何使它不是未定义的,以便我可以测试那个小盒子是否在一个大盒子中。