FLEX: обработчик кликов UIComponent? - PullRequest
2 голосов
/ 27 мая 2010

Спасибо за чтение.

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

Я пытаюсь получить обработчик кликов для всего UIComponent, чтобы при щелчке по метке или изображению вызывался тот же обработчик события [click]. Если я добавлю обработчик щелчка на корневой компонент, он будет работать, но когда я добавлю пространство между меткой и изображением, пространство между ними станет недоступным для клика. Я создаю пространство, используя метод перемещения (x, y) для метки и изображения с небольшим промежутком между координатами x / y.

Есть идеи, как это исправить?

Спасибо.

Ответы [ 3 ]

1 голос
/ 28 мая 2010

Что касается ответа invertedSpear, то это не ошибка, это известное поведение. Бывают ситуации, когда вы не хотите, чтобы фон контейнера захватывал клики, и такое поведение позволяет вам контролировать это.

invertedSpear правильно, что UIComponent не обрабатывает свои собственные стили фона. Вы можете нарисовать свой собственный прозрачный фон для захвата событий мыши:

override protected function updateDisplayList(w:Number, h:Number):void
{
    super.updateDisplayList(w, h);

    var g:Graphics = this.graphics;
    g.clear();
    g.beginFill(0xFF0000, 0); // Fully transparent colour.
    g.drawRect(0, 0, w, h); // Draw to the full size of the UIComponent.
    g.endFill();
}
0 голосов
/ 28 мая 2010

Я думаю, что компонент пользовательского интерфейса страдает от той же проблемы, что и холст (который происходит от компонента пользовательского интерфейса) при обработке кликов. Когда вы щелкаете по холсту, ничего не происходит, если вы не зададите этому холсту фон, даже если вы установите альфа в 0 (полностью прозрачный). Это ошибка, о которой Adobe знает, но еще не исправила, идея в том, что отсутствие BG фактически означает, что там ничего нет. Просто придание этому фону делает его кликабельным. Теперь, к сожалению, у UIComponent нет стилей фона, вы можете переключиться на холст? Другая альтернатива может заключаться в том, чтобы включить изображение в UIComponent, установить альфа этого значения в 0, а высоту и ширину в 100%

0 голосов
/ 27 мая 2010

Вы можете попробовать вместо этого mx: Spacer? UIComponent не является контейнером, но это может быть вашей проблемой. Вместо использования UIComponent, вы можете попытаться расширить mx.core.Container. Но сначала попробуйте проставку.

Редактировать: Чем больше я думаю об этом, тем больше я думаю, что проставка будет работать. Что касается обработчика щелчков компонента пользовательского интерфейса, то на самом деле происходит то, что отдельные элементы в пользовательском интерфейсе регистрируют щелчки, и они всплывают. Когда вы делаете ход, как и в другом предложенном ответе, на самом деле ничего не остается для регистрации клика. Проставка должна решить эту проблему, и проще.

...