Проблема с пользовательским курсором AS3.0

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Проблема с пользовательским курсором AS3.0

Сообщение wapifz »

Всем привет.
Нужно было сделать зону, в которой будет виден курсор, который помещен в контейнер. Сделал, но что-то не правильно.
Вот кусок кода.

Код: Выделить всё

zone.addEventListener(MouseEvent.MOUSE_MOVE,cursorMove);function cursorMove(event:MouseEvent):void{    addChild(cursor);    Mouse.hide();    logs.appendText("Перемещение внутри \n");    cursor.x = event.stageX;    cursor.y = event.stageY;    event.updateAfterEvent();}zone.addEventListener(MouseEvent.MOUSE_OUT,cursorOut);function cursorOut(e:MouseEvent){    removeChild(cursor);    Mouse.show();    logs.appendText("Удаляем курсор \n");}
Что тут неправильно? Когда курсор находится в зоне, он все время мигает.
Исходник прилагается.
http://rghost.ru/36374755
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Проблема с пользовательским курсором AS3.0

Сообщение bodnar »

курсор прячется при каждом движении мышки а показывается при выведении
почему тогда не прятать курсор только при наведении? MouseEvent.MOUSE_OVER так кажется

Да и вообще, чтобы сделать польховательский курсор лучше пользоваться MouseCursorData http://help.adobe.com/ru_RU/FlashPlatfo ... rData.html
Встроенный курсор внедрен непосредственно через механизм курсора операционной системы и является более эффективным средством для отображения пользовательского курсора, чем использование экранного объекта. Курсор можно анимировать, предоставив несколько изображений с помощью свойства data и установив частоту кадров.
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Re: Проблема с пользовательским курсором AS3.0

Сообщение wapifz »

32х32 - маловат будет курсор. В исходнике же у меня не настоящий символ курсора ;)
Сейчас попробую MOUSE_OVER заюзать.

UPD
Убрал функцию с MOUSE_OUT, но как тогда осуществить удаление курсора, если же пользователь передвинул курсор ЗА границу "зоны" ?
При создании слушателя с MOUSE_OUT, курсор все равно исчезает и появляется заново.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Проблема с пользовательским курсором AS3.0

Сообщение sanych_dv »

ROLL_OVER - убираем мышь и показываем свой курсор
MOUSE_MOVE - двигаем курсор
ROLL_OUT - убираем свой курсор и показываем мышь
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Re: Проблема с пользовательским курсором AS3.0

Сообщение wapifz »

sanych_dv

Сделал как ты сказал - все равно постоянно он появляется и исчезает.
Сам посмотри.
http://rghost.ru/36386195
Что не так то?
Аватара пользователя
gaponj88
Сообщения: 433
Зарегистрирован: 21 окт 2011, 12:26

Re: Проблема с пользовательским курсором AS3.0

Сообщение gaponj88 »

Так попробуй:
zone.addEventListener(MouseEvent.MOUSE_MOVE, function (e:MouseEvent) {
addChild(cursor);
Mouse.hide();
logs.appendText("Перемещение внутри \n");
e.updateAfterEvent();
cursor.x = mouseX;
cursor.y = mouseY;

}
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Проблема с пользовательским курсором AS3.0

Сообщение bodnar »

wapifz
ахахах, какая занятная штука, :lol:
что-то тут в uiloader не так
ибо без него этот код работает отлично
а когда над ним прячется курсор он почему то выбрасывает событие MOUSE_OUT
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Re: Проблема с пользовательским курсором AS3.0

Сообщение wapifz »

gaponj88
Одно говно.

bodnar
А ведь надо использовать UIloader...
Есть ли другие альтернативы, кроме startDrag (тоже не работает), MouseCursorData (Не подойдет к требованиям) и обычного перемещения?

Может тогда другие компоненты, например, от yahoo попробовать?

UPD
Да нет, этот код и с обычными мувиками не работает корректно.
sanych_dv
Разработчик
Разработчик
Сообщения: 550
Зарегистрирован: 29 апр 2011, 01:52

Re: Проблема с пользовательским курсором AS3.0

Сообщение sanych_dv »

Код: Выделить всё

 import flash.events.MouseEvent;cursor.source = myCur;zone.source = zoneSource; var shadow:DropShadowFilter = new DropShadowFilter();shadow.distance = 5;shadow.color = 0x999999;shadow.alpha = 0.5;shadow.angle = 45;cursor.filters = [shadow];cursor.visible = false; // ОБРАТИТЕ ВНИМАНИЕcursor.mouseChildren = true; addChild(cursor); logs.appendText("Создан курсор \n"); zone.addEventListener (MouseEvent.ROLL_OVER, cursorOver);function cursorOver (e:MouseEvent){cursor.visible = true;    Mouse.hide();    logs.appendText("ROLL_OVER \n");}zone.addEventListener (MouseEvent.MOUSE_MOVE, cursorMove);function cursorMove (e:MouseEvent){    cursor.x = e.stageX;    cursor.y = e.stageY;    e.updateAfterEvent();    logs.appendText("MOUSE_MOVE \n");}zone.addEventListener(MouseEvent.ROLL_OUT, cursorOut);function cursorOut(e:MouseEvent){cursor.visible = false;    Mouse.show();    logs.appendText("ROLL_OUT \n");}  
И центруем курсор в символе так, чтобы в центре была заливка. Или прозрачный квадрат снизу. Исходник: http://ifolder.ru/28563237
wapifz
Сообщения: 19
Зарегистрирован: 10 окт 2011, 14:33

Re: Проблема с пользовательским курсором AS3.0

Сообщение wapifz »

sanych_dv

Можешь сохранить для CS4?
У меня CS5. и от CS5.5 не открывает
Ответить