Изменить курсор мыши на растровое изображение (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 был получен как нулевой в конструкторе.
Вот несколько простых шагов, чтобы изменить курсор по умолчанию с растровым изображением:
- Создайте свой курсор типа Bitmap, используя изображение по вашему выбору. Вы также можете динамически устанавливать bitmapData во время выполнения.
var DEFAULT_CURSOR_IMAGE : Class; var myCursorBitmap : Bitmap; ... myCursorBitmap = new DEFAULT_CURSOR_IMAGE();
- Зарегистрируйтесь, чтобы получать события перемещения мыши и соответственно обновлять положение курсора.
function onMouseMove(event : MouseEvent) : void { myCursorBitmap.x = event.localX; myCursorBitmap.y = event.localY; }
Скрыть настоящий курсор с помощью Mouse.hide().
Покажите свой собственный курсор. Вы можете обновить форму курсора позже, установив bitmapData динамически.
addChild(myCursorBitmap); ... myCursorBitmap.bitmapData = myNewCursor;
Чтобы восстановить курсор по умолчанию, удалите растровое изображение курсора со сцены и вызовите Mouse.show().