Как щелкнуть по экранному объекту во Flash с AS3?

Я создаю приложение для редактирования фотографий, в котором в определенный момент редактируемая фотография должна быть помещена между двумя слоями объектов DisplayObject (фоновое изображение и маска изображения).

Однако есть проблема. Когда редактируемое изображение помещается между фоновым слоем и слоями маски изображения, оно становится не щелкаемым и, следовательно, застревает там без возможности перетаскивания его снова. (Фоторедактор использует библиотеку TransformManager.)

Я ищу способ, позволяющий вам выбрать изображение, которое вы редактируете, независимо от того, есть ли другой объект DisplayObject поверх него. И это, вероятно, означает, что нужно найти способ щелкнуть маску изображения.

Есть способ сделать это?

Я попытался установить mouseChildren = false на imageMask, но это не дало желаемого эффекта.

Большое спасибо.

7 ответов

Решение

Как насчет этого?

mask.mouseEnabled = false;

У меня были похожие проблемы, и мне удалось решить их, используя оба

 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.

надеюсь, что это помогает кому-то там..

Другие вопросы по тегам