Стопдраг не работает как положено - PullRequest
0 голосов
/ 23 августа 2010

Я пытаюсь что-то перетащить, и при остановке он должен запустить функцию, если выполнены определенные требования:

if(e.target.dropTarget.parent == targetName || e.target.dropTarget.parent.parent.parent.getChildByName("cloud").getChildByName("itemPlacer").getChildAt(1) == targetName){

Это хорошо работает, когда я правильно перетаскиваю и останавливаю (требованиявыполнено), но если требования не выполнены, я получаю сообщение об ошибке, в котором говорится, что место, на которое я ссылаюсь, не может быть пустым.Я знаю, что проблема лежит после части ||, но как я могу решить эту проблему?

Есть ли более короткий способ сделать эти проверки?В данный момент я прохожу много заявлений родителей и getchildat, и мне было интересно, есть ли другой способ.

1 Ответ

2 голосов
/ 23 августа 2010

Вы можете назначить переменную вашему контейнеру, а затем использовать переменную в ваших условных выражениях.

Edit:

Чтобы получить доступ к методу getChildByName, ваши элементы должны быть приведены как минимум к DisplayObjectContainer. MovieClip, Sprite расширяют DisplayObjectContainer, поэтому вы можете использовать любой из них. Здесь я использую MovieClip, но выбор был произвольным.

var main:MovieClip = e.target.dropTarget.parent ;
var container:MovieClip  = main.parent.parent as MovieClip;

var cloud:MovieClip = container.getChildByName("cloud");
var itemPlacer:MovieClip = cloud.getChildByName("itemPlacer");

var child:MovieClip = container.getChildAt(1);

if( main == targetName || child == targetName )
  //your code here

Что касается другого вопроса, проверьте наличие нулевых значений, прежде чем что-либо еще.

  if(main != null && child != null)
  {
      if( main == targetName || child == targetName )
      {
         //your code here
      }

  }else{

        //your code here
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...