Установка приоритета курсора с помощью собственных курсоров AIR - PullRequest
2 голосов
/ 13 декабря 2011

Есть ли способ установить приоритет (CursorManagerPriority.HIGH) курсора мыши, установленного с помощью Mouse.cursor = '...';?

Короче говоря, мне пришлось прибегнуть к использованию CursorManager для применения курсоров, потому что установка приоритета крайне важна для моего приложения из-за того, что элемент управления HTML отменяет все изменения курсора без высокого приоритет. Установка курсоров с помощью диспетчера курсоров полностью работает, но курсоры не такие быстрые / реагирующие, как те, которые отображаются на уровне операционной системы (как описано здесь ).

Если нет способа, мой следующий вопрос: есть ли способ отменить изменения курсора, сделанные с помощью элемента управления HTML ? Настройка mouseEnabled = false делает это ... но отключает все события мыши на HTML-странице, так что это не работает.


Пример: * ** 1022 тысячу двадцать одна * Это не работает:

setInterval(function():void { Mouse.cursor = 'ibeam'; }, 100);

Установка курсора с высоким приоритетом работает, однако:

// ibeamCursor is an embedded PNG
CursorManager.setCursor(ibeamCursor, CursorManagerPriority.HIGH, -2, -4);

(этот код используется в mx:Application scope)

Ответы [ 2 ]

0 голосов
/ 18 декабря 2011

Я считаю, что элемент управления HTML наследуется от ScrollControlBase .Попробуйте исправить проблемы с мышью на этом родительском элементе управления, а не на элементе управления HTML.

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

0 голосов
/ 15 декабря 2011

Я предполагаю, что у вас есть доступ к коду для элемента управления HTML ... в противном случае, я не уверен, что вы вообще сможете это сделать.

Не думаю, что вы можете установить приоритет для курсоров, установленных Mouse.cursor = "..."; (хотя я могу ошибаться ... если у кого-то есть информация об обратном, не стесняйтесь поправлять меня.)

Однако я думаю, что вы можете очень легко подавить изменения курсора, просто используя логическую переменную и оператор if.

var customCursors:Boolean;

Затем на каждом месте, где происходят изменения курсора ...

if(customCursors == true)
{
    Mouse.cursor = "mycursor";
}

Это позволит или запретит изменение курсоров, просто изменив переменную customCursors.

Однако может быть что-то более полезное, если вы имеете дело с двумя конфликтующими курсорами, и вы хотите, чтобы один происходил только в определенных случаях. Для этого вы можете попробовать другое утверждение if.

В моем собственном коде я хочу, чтобы один курсор отображался только при перетаскивании объекта, а не только когда мышь находится над ним. Один находится внутри события перемещения, а другой - внутри события over. Был третий, который появлялся только тогда, когда объект перетаскивался над определенной точкой, а когда это не так, он должен был быть обычным перетаскивающим курсором.

Это создало довольно раздражающий конфликт ...

Чтобы исправить это, Я фактически проверил свойство Mouse.cursor в своем операторе if! Размещение различных операторов Mouse.cursor в моих событиях создало своего рода приоритет для курсоров. Работает отлично.

В моей мышке над утверждением:

Mouse.cursor = "hand";

В моем утверждении мыши (где я начинаю перетаскивать):

Mouse.cursor = "dragging";

В моем заявлении о движении:

if(Mouse.cursor == "draggingover")
{
    Mouse.cursor = "dragging";
}

В моем выражении "вверх" (где я прекращаю перетаскивать):

Mouse.cursor = "hand";

В моем выражении мышью:

Mouse.cursor = "pointer";

Надеюсь, это поможет! Если это произойдет, не беспокойтесь о том, чтобы упустить из виду это кажущееся очевидным решение ... Я думаю, что мы все склонны делать это, когда ищем встроенные функции.

Если это не поможет, извините. Опять же, я не думаю, что есть другой способ, но если кто-то знает, пожалуйста, взвесьте.

...