hitTestObject, stopDrag останавливает перетаскивание двух видеороликов, даже если функция указывает один видеоролик, чтобы остановить перетаскивание

#actionscript-3 #events #flash-cs5 #movieclip #hittest

#actionscript-3 #Мероприятия #flash-cs5 #видеоролик #hittest

Вопрос:

У меня есть функция, которая указывает, когда movieclip1 перетаскивается и попадает на строку, тогда она останавливает перетаскивание, однако, похоже, она останавливает всю функцию перетаскивания в swf на других видеороликах, даже если они не вызываются в функции. Может ли кто-нибудь, пожалуйста, помочь мне с этим.

С уважением, T

Вот код:

  function hitTest(event:Event):void
 {
 if (movieclip1.hitTestObject(line))
   {
 movieclip1.stopDrag();
   }
 else
   {

   }
 }
  

Комментарии:

1. Полезно, что вы опубликовали код, но вам, вероятно, следует опубликовать больше, чтобы нам не приходилось делать предположения о том, как написан ваш код. Например, можете ли вы опубликовать код, который запускает перетаскивание?

2. Попробуйте заменить код в hitTest() функции следующим: var displayObject:DisplayObject = DisplayObject(e.currentTarget); if(displayObject.hitTestObject) displayObject.stopDrag();

3. Также вам, вероятно, следует изменить имя hitTest() функции на onClick() или onMovieClipClick() или clickHandler() просто для соблюдения общих соглашений об именовании AS3.

Ответ №1:

Вы абсолютно уверены, что у вас есть только один экземпляр movieclip1 на вашей сцене? Обязательно перепроверьте. Вы создаете их динамически или они предварительно загружаются при загрузке вашего SWF-файла?

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

Если они загружаются динамически:
Проверьте функцию, в которой они создаются. Если вы присваиваете им имена в цикле (с числом в конце, как указано выше), убедитесь, что вы правильно увеличиваете числовое значение, используемое в конце.