Как щелкнуть по экранному объекту во Flash с AS3?
Я создаю приложение для редактирования фотографий, в котором в определенный момент редактируемая фотография должна быть помещена между двумя слоями объектов DisplayObject (фоновое изображение и маска изображения).
Однако есть проблема. Когда редактируемое изображение помещается между фоновым слоем и слоями маски изображения, оно становится не щелкаемым и, следовательно, застревает там без возможности перетаскивания его снова. (Фоторедактор использует библиотеку TransformManager.)
Я ищу способ, позволяющий вам выбрать изображение, которое вы редактируете, независимо от того, есть ли другой объект DisplayObject поверх него. И это, вероятно, означает, что нужно найти способ щелкнуть маску изображения.
Есть способ сделать это?
Я попытался установить mouseChildren = false на imageMask, но это не дало желаемого эффекта.
Большое спасибо.
7 ответов
У меня были похожие проблемы, и мне удалось решить их, используя оба
displayobject.mouseChildren = false;
а также
displayobject.mouseEnabled = false;
на объекте, который вы хотите щелкнуть.
Вы всегда можете прикрепить прослушиватель Mouse Click к контейнеру, а затем либо использовать GetObjectsUnderPoint и проверить свой объект, либо выполнить тест на попадание и посмотреть, находится ли позиция мыши над предполагаемым объектом.
Тест попадания будет выглядеть примерно так !this.YourPhoto.hitTestPoint(stage.mouseX, stage.mouseY, false)
б
Если я понимаю вашу проблему, этот удобный класс должен решить ее: http://www.mosessupposes.com/utilities/InteractivePNG.html
Посмотрите, что здесь делает senocular, в частности, в методе handleUpdate. В основном: получение списка всего, что находится под мышью, чтобы найти ваш объект.
Я думаю, что наткнулся на похожую проблему, хотя в as2.
Во флэш-памяти, когда вы помещаете фрагмент ролика поверх фрагмента ролика, а фрагмент ролика вверху имеет любые реализованные события мыши, он захватывает все события мыши, чтобы они никогда не достигали закрытого фрагмента ролика.
Решение состоит в том, чтобы не иметь никаких событий мыши для верхнего фрагмента ролика и располагать фрагмент ролика внизу события мыши захвата и перенаправить некоторые из них в верхний фрагмент ролика (вы можете проверить положение мыши с помощью hitTest, чтобы определить, должны ли они быть перенаправлен).
У меня была странная ошибка, которую я использовал;
movieClip.mouseEnabled = false;
но по какой-то причине не работал.. сводил меня с ума!! как я использовал это так много раз раньше. перепробовал много разных вещей, но ничего не получилось, затем я удалил MovieClip и создал новый и работал.. так что содержимое MovieClip должно быть повреждено или что-то в этом роде, поскольку в MovieClip встроено старое динамическое поле Text Area.
надеюсь, что это помогает кому-то там..