#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-файла?
Если они предварительно загружены:
Возможно, во время тестирования вы сделали несколько быстрых копий, и теперь у этих копий одинаковое имя, и все они реагируют одинаково. Это мое первое предположение.
Если они загружаются динамически:
Проверьте функцию, в которой они создаются. Если вы присваиваете им имена в цикле (с числом в конце, как указано выше), убедитесь, что вы правильно увеличиваете числовое значение, используемое в конце.