2009-07-29 2 views
1

Если мое понимание Flex верное, скины в Flex - это только объекты DisplayObject, которые добавляются как дочерние элементы в UIComponents для создания визуального представления объекта. Но если мое понимание модели события Flash правильное, если есть непрозрачный DisplayObject поверх другого, события мыши перейдут к самому верхнему DisplayObject. Перекрытый DisplayObject не получит никакого ввода мыши.Как скин Flex UIComponents захватывает события мыши?

Как работает скин Flex UIComponents?

ответ

1

Эта страница имеет довольно хорошее объяснение событийный механизм в Flex:

http://livedocs.adobe.com/flex/3/html/help.html?content=events_08.html

Ключ Я считаю, что MouseEvents будет пузырь по умолчанию. Поскольку элементы скина добавляются в виде дочерних элементов списка отображения компонента (в «rawChildren»), событие все равно будет всплывать до родителя.

0

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

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

2

Поскольку детали на коже добавляются компонентом, это дает возможность гарантировать, что вы не можете щелкнуть по графике, если вы посмотрите в классе ButtonBase, в котором находится кнопка, вы можете увидеть комментарии, которые объясняют это:

// DisplayObjectContainer properties. 
    // Setting mouseChildren to false ensures that mouse events 
    // are dispatched from the Button itself, 
    // not from its skins, icons, or TextField. 
    // One reason for doing this is that if you press the mouse button 
    // while over the TextField and release the mouse button while over 
    // a skin or icon, we want the player to dispatch a "click" event. 
    // Another is that if mouseChildren were true and someone uses 
    // Sprites rather than Shapes for the skins or icons, 
    // then we we wouldn't get a click because the current skin or icon 
    // changes between the mouseDown and the mouseUp. 
    // (This doesn't happen even when mouseChildren is true if the skins 
    // and icons are Shapes, because Shapes never dispatch mouse events; 
    // they are dispatched from the Button in this case.) 
Смежные вопросы