我有16个对象(MovieClip),每个对象都有一个唯一的实例名称(slot1-16)。 我正在尝试拖放代码,返回拖动对象的实例名称。
function fl_ReleaseToDrop(evt:MouseEvent):void {
var object = evt.currentTarget;
if(object is textBox || object is UILoader)
{
for(var i:int = 1; i < 16; i++){
//Checks the correct drop target
if (object.hitTestObject(getChildByName("slot" + i)))
{
trace("slot" + i);
slot(getChildByName("slot" + i)).gotoAndStop(3);
}else{
object.x = xPos; //If not, return the clip to its original position
object.y = yPos;
}
}
object.stopDrag();
}
}
真正发生的事情是我可以拖入的唯一地方是slot1,其他插槽无效。
答案 0 :(得分:0)
在当前代码中,如果使用slot1
对象的第一次命中测试失败,则将拖动的对象返回到其原始位置,当然所有与其他插槽的命中测试都将失败。
所以你应该在对所有对象进行命中测试后将对象返回到原始位置。例如,您可以使用布尔值来了解是否至少有一个成功的命中测试,在这种情况下,您不需要将拖动的对象返回到其原始位置:
function fl_ReleaseToDrop(evt:MouseEvent):void
{
var object = evt.currentTarget;
var hit_test:Boolean = false;
if(object is textBox || object is UILoader)
{
for(var i:int = 1; i < 16; i++)
{
if (object.hitTestObject(getChildByName("slot" + i)))
{
hit_test = true;
slot(getChildByName("slot" + i)).gotoAndStop(3);
}
}
if(!hit_test)
{
object.x = xPos;
object.y = yPos;
}
object.stopDrag();
}
}
希望可以提供帮助。