2015-10-23 2 views
0

У меня есть доска с 16 объектами (MovieClip), каждая из которых имеет уникальное имя экземпляра (slot1-16). Я пытаюсь сделать код перетаскивания, который возвращает имя экземпляра объекта, который был перенесен на него.AS3 Как я могу вернуть объект, который перетаскивается в Item

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

В вашем текущем коде, если 1-й хит-тест с объектом 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(); 
    } 
} 

Надежда, что может Помогите.

+0

Прежде всего, он работает. Но не совсем. Поскольку все мои целевые слоты находятся на стадии сортировки 4X4, поэтому я не могу отбросить элемент, который я перетаскиваю именно на слот (он коснулся других слотов), затем он изменил структуру всех слотов, которые он коснулся и не только то, что я имею в виду. – Aviway

+0

@Aviway Итак, вы должны указать слот, который вы имеете в виду, и выполнить только те тесты. – akmozo

+0

Как я могу указать слот? – Aviway

Смежные вопросы