Flex 3: ฉันจะเปลี่ยนเคอร์เซอร์ของเมาส์ได้อย่างไรเมื่อวางเมาส์เหนือการป้อนข้อความ

ตามค่าเริ่มต้นใน Flex เมื่อคุณวางเมาส์เหนือการป้อนข้อความ เคอร์เซอร์ของเมาส์จะเปลี่ยนเป็นแถบข้ามมาตรฐาน I ฉันจะเปลี่ยนเคอร์เซอร์นี้เพื่อให้เคอร์เซอร์ตัวชี้เมาส์ปกติแสดงแทนแถบครอสบาร์ได้อย่างไร

อัปเดต: ดูเหมือนว่ากระบวนการนี้จะง่ายใน Flex 4 ตามโพสต์บล็อกนี้: http://blog.flexexamples.com/2008/11/03/setting-mouse-cursors-in-flash-player-10/

เนื่องจากตอนนี้ฉันติดอยู่กับ Flex 3 ฉันจะทำอะไรที่คล้ายกันได้อย่างไร

อัปเดต 2: นอกจากนี้ คำถามนี้ค่อนข้างคล้ายกับคำถามนี้: หลีกเลี่ยงการเปลี่ยนเคอร์เซอร์บนช่องข้อความแบบไดนามิกใน Flash CS3

แม้ว่าฉันจะใช้ Flex Builder มาตรฐาน ไม่ใช่ Flash CS3


person DyreSchlock    schedule 22.04.2009    source แหล่งที่มา


คำตอบ (5)


ขอชี้แจงให้ชัดเจน - MouseCursor และคลาส Mouse ก็มีอยู่ในคลาสนี้เช่นกัน Flex 3 บนแฟลช 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

Leete ข้อมูลเพิ่มเติมบทความนี้ 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 รับคลาสอ็อบเจ็กต์ ฉันจะค้นหา Class Object สำหรับเคอร์เซอร์มาตรฐานบนระบบปฏิบัติการใดก็ตามที่ผู้ใช้อยู่ได้อย่างไร - 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