在Flex中,默认情况下,当您将鼠标悬停在文本输入上时,鼠标光标将更改为标准I横杆。如何更改此光标以显示常规鼠标指针光标而不是I横杆?
更新:根据这篇博文,似乎这个过程在Flex 4中很简单:http://blog.flexexamples.com/2008/11/03/setting-mouse-cursors-in-flash-player-10/
由于我暂时停留在Flex 3上,我该如何做类似的事情?
update2:此问题有点类似于这个问题: Avoiding cursor change over dynamic text fields in Flash CS3
虽然,我使用的是标准的Flex Builder,而不是Flash CS3。
答案 0 :(得分:7)
只是为了澄清 - 在Flash 10上的Flex 3中也存在MouseCursor和Mouse类。 所以你可以挂钩到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;
});
答案 1 :(得分:4)
必须修改三个属性 useHandCursor = true buttonMode = true mouseChildren = false
Leete更多信息,请参阅本文http://www.anujgakhar.com/2008/03/27/flex-how-to-display-hand-cursor-on-components/
答案 2 :(得分:2)
您必须使用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
}
答案 3 :(得分:0)
您可以将HBOX与Label一起使用而不是TextInput。当鼠标悬停在Label上时,系统不会更改光标。如果您希望用户可以编辑文本,则需要做更多的工作。
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
}
}
答案 4 :(得分:-1)
还可以通过将 buttonMode 属性设置为 true 来实现您希望的任何组件。这会带来鼠标光标而不是文本光标。