Гибкий способ 3: Как изменить курсор мыши при наведении указателя мыши на ввод текста?

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

обновление: похоже, этот процесс во Flex 4 очень прост, согласно этому сообщению в блоге: http://blog.flexexamples.com/2008/11/03/setting-mouse-cursors-in-flash-player-10/

Поскольку я пока что использую Flex 3, как я могу сделать что-то подобное?

update2: Кроме того, этот вопрос несколько похож на этот вопрос: Предотвращение смены курсора над динамическими текстовыми полями в Flash CS3

Хотя я использую стандартный Flex Builder, а не Flash CS3.


person DyreSchlock    schedule 22.04.2009    source источник


Ответы (5)


Чтобы уточнить: MouseCursor и классы Mouse также существуют в Flex 3 на flash 10. Итак, вы можете подключиться к событиям MOUSE_OVER и MOUSE_OUT:

elem.addEventListener(MouseEvent.MOUSE_OVER, function(event:Event):void {
    Mouse.cursor = MouseCursor.BUTTON;
});

elem.addEventListener(MouseEvent.MOUSE_OUT, function(event:Event):void {
    Mouse.cursor = MouseCursor.ARROW;
});
person tm_lv    schedule 01.10.2010
comment
В каком пакете существуют MouseCursor и Mouse? Ссылки больше не ведут ни к чему полезному. - person Mashmagar; 21.08.2013

Необходимо изменить три свойства useHandCursor = true buttonMode = true mouseChildren = false

Получите дополнительную информацию в этой статье http://www.anujgakhar.com/2008/03/27/flex-how-to-display-hand-cursor-on-components/

person Oscar Navidad    schedule 30.03.2010

Вы должны использовать CursorManager:

import mx.managers.CursorManager;

protected function textMouseOverHandler(event:Event):void
{
    CursorManager.setCursor(yourCursor, yourPriority, xOffset, yOffset);
    // Rest of your handler
}

protected function textMouseOutHandler(event:Event):void
{
    // be sure to set the cursor back here
}
person Justin Niessner    schedule 22.04.2009
comment
Однако метод setCursor принимает объект класса. Как мне найти объект класса для стандартного курсора в любой операционной системе, в которой работает пользователь? - person DyreSchlock; 22.04.2009
comment
Вам нужно будет создать изображение стрелки, если вам нужна эта функция. К сожалению, Flex 3 передает управление курсором в систему, если курсор не определен. Курсор I отображается в вашей системе, а не в Flex. - person Justin Niessner; 23.04.2009
comment
Хм. странный. Итак, как система узнает, когда менять курсор? Есть ли способ изменить идентификацию TextField, чтобы он не знал, как его изменить? - person DyreSchlock; 23.04.2009

Вы можете использовать HBOX с меткой вместо TextInput. Система не изменит курсор, когда указатель мыши находится над меткой. Если вы хотите, чтобы пользователь мог редактировать текст, вам нужно будет проделать еще немного работы.

public class MyTextInput extends HBox
{
public function  MyTextInput()
{
   super();
   var label:Label = new Label();
   label.text="some text";
   addChild(label);
   addEventListener(MouseEvent.CLICK, editProperties, true);
}
private function editProperties(event:MouseEvent)
{
  //do something to allow the user to edit the text e.g. PopupManager.createPopup
}
}
person Phil C    schedule 13.05.2009

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

person Community    schedule 16.09.2009
comment
Есть три обязательных свойства. См. Ответ Оскара. - person mwilson; 25.03.2013