Правильный путь в Flex, чтобы прозрачная панель реагировала на события rollOver () - PullRequest
2 голосов
/ 15 ноября 2008

У меня есть приложение Canvas in Flex, в котором есть элементы, которые занимают только около 50% площади основного холста.

Я хочу, чтобы холст отвечал на rollOver события для всей области, а не только для области, которая покрыта элементами внутри.

Я установил следующие атрибуты для достижения этой цели:

<mx:Canvas backgroundColor="white"
backgroundAlpha=".01"
rollOver="rollOver(event)">...

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

Есть ли способ заставить события мыши воздействовать на всю область UIComponent?

Ответы [ 3 ]

6 голосов
/ 16 ноября 2008

То, что вы делаете, совершенно приемлемо, хотя использование произвольного альфа-значения 0,01 не нужно, вы можете установить его backgroundAlpha в простое значение 0.

Я обычно использую Canvases для сложных многослойных интерфейсов и настраиваю свой стиль Canvas по умолчанию с помощью css, чтобы иметь backgroundAlpha, равный 0, и backgroundColor из #ffffff, тогда, если мне нужен холст, чтобы он был фактически видимым, я настраиваю его отдельный backgroundAlpha. и свойства backgroundColor.

Нет ничего плохого в установке альфа-канала графического объекта на 0, чтобы он по-прежнему реагировал на события, но не был полностью «выключен», а мы, AS-кодеры, делаем это постоянно!

0 голосов
/ 26 декабря 2008

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

0 голосов
/ 15 ноября 2008

Вы можете сделать это:



import flash.event.MouseEvent;
...
canvas.addEventListener(MouseEvent.ROLL_OVER,function(event:MouseEvent):void {
    ...
});

где "canvas" - это идентификатор холста в вашем mxml.

...