Подходы заменить курсор в чистом проекте AS3 / Flare? - PullRequest
1 голос
/ 21 апреля 2010

У меня есть чистый проект AS3 (без Flex), который использует Flare для отображения и взаимодействия с визуализацией данных. Я только что реализовал некоторое поведение панорамирования, чтобы вы могли перетаскивать визуализацию и перетаскивать ее, и теперь я хотел бы дать пользователю визуальный индикатор того, что это возможно, переключая курсор со стрелкой с красивым изображением руки, похожим на ручку.

Пользователь может щелкать и перетаскивать в любое время, кроме случаев, когда мышь находится над кликабельным узлом (когда курсор переключается на указатель - это поведение уже на месте).

Итак ...
1) Нужно ли создавать свой собственный растровое изображение / спрайт или есть палитра встроенных курсоров, которые я могу использовать? (Я не использую Flex.)

2) Есть ли способ просто заменить стрелку по умолчанию на панорамирующий курсор по всему проекту, или мне нужно прикрепить переключение к событиям мыши на экранных объектах? Могу ли я использовать объект сцены для повсеместного применения этого поведения?

3) Как мне выполнить своп? Использую ли я объект Cursor напрямую или мне нужно подключиться к CursorManager?

Любое руководство, псевдокод или мудрые слова очень ценятся!

Ответы [ 2 ]

2 голосов
/ 22 апреля 2010

Несколько вещей, которые я выучил (все довольно новенькое, правда).Во-первых, есть несколько встроенных параметров курсора, которые вы можете установить, установив Mouse.cursor на любой из параметров MouseCursor.TYPE.Объект Mouse - это одноуровневый объект, доступный для всего приложения, поэтому, где бы вы ни изменяли его в своем коде, изменение сохраняется до тех пор, пока не будет запущено другое изменение.В моем простом случае я сделал это:

    //on init, start with the "hand"
    Mouse.cursor = MouseCursor.HAND;

    //on clickable items, change to "pointer", then back to "hand"
    myClickableNode.addEventListener(MouseEvent.ROLL_OVER, function(evt:Event):void {
      Mouse.cursor = MouseCursor.BUTTON;
    });
    myClickableNode.addEventListener(MouseEvent.ROLL_OUT, function(evt:Event):void {
    Mouse.cursor = MouseCursor.HAND;
    });

В результате у вас всегда будет «рука», пока вы не перевернете что-то, на которое можно кликнуть, и вы получите «указатель».

2 голосов
/ 22 апреля 2010

Я не думаю, что во Flash есть CursorManger, только гибкий. Я делаю это с помощью пользовательского класса, который скрывает курсор и перетаскивает настроенный курсор в mouse_move. Вы должны установить его в mouseChildren = false, иначе будет мерцать или кнопки не будут активными. Одна проблема, которую я обнаружил, связана с пользовательскими контекстными меню. Попробуйте эту ссылку http://abrahamyan.com/2009/03/23/as3-cursormanager/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...