Изменить курсор мыши на растровое изображение (Flex 4)?

Во Flex 4 как я могу изменить курсор на растровое изображение, определенное во время выполнения? Все примеры, которые я видел, используют CursorManager.setCursor, чтобы установить курсор на класс, указанный во время компиляции.

То, что я хочу сделать, это изменить курсор на растровое изображение, чьи bitmapData определяются контекстом.

3 ответа

Решение
package cursor
{
import flash.display.BitmapData;
import flash.display.PixelSnapping;

import mx.core.BitmapAsset;

public class RuntimeBitmap1 extends BitmapAsset
{

    public static var staticBitmapData:BitmapData;

    public function RuntimeBitmap1()
    {
        super(staticBitmapData);
    }
}
}

Использование:

var bitmapData:BitmapData = new BitmapData(50, 50, false, 0x88888888);
RuntimeBitmap1.staticBitmapData = bitmapData;
cursorManager.setCursor(RuntimeBitmap1, 0);

Я хотел нарисовать UIComponent в качестве курсора.

Мне удалось это, используя комбинацию ответа Максима и этой статьи Flex Cookbox. Единственное изменение, которое я должен был внести в ответ Максима, было следующее:

public function RuntimeBitmap1()
{
    super(RuntimeBitmap1.staticBitmapData);
}

В противном случае staticBitmapData был получен как нулевой в конструкторе.

Вот несколько простых шагов, чтобы изменить курсор по умолчанию с растровым изображением:

  1. Создайте свой курсор типа Bitmap, используя изображение по вашему выбору. Вы также можете динамически устанавливать bitmapData во время выполнения.
    
    var DEFAULT_CURSOR_IMAGE : Class;
    var myCursorBitmap : Bitmap;
    ...
    myCursorBitmap = new DEFAULT_CURSOR_IMAGE();
  2. Зарегистрируйтесь, чтобы получать события перемещения мыши и соответственно обновлять положение курсора.
    
    function onMouseMove(event : MouseEvent) : void
    {
       myCursorBitmap.x = event.localX;
       myCursorBitmap.y = event.localY;
    }
  3. Скрыть настоящий курсор с помощью Mouse.hide().

  4. Покажите свой собственный курсор. Вы можете обновить форму курсора позже, установив bitmapData динамически.

    
    addChild(myCursorBitmap);
    ...
    myCursorBitmap.bitmapData = myNewCursor;

Чтобы восстановить курсор по умолчанию, удалите растровое изображение курсора со сцены и вызовите Mouse.show().

Другие вопросы по тегам