Страница 1 из 2

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

Добавлено: 06 фев 2012, 18:26
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

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

Добавлено: 06 фев 2012, 19:26
bodnar
курсор прячется при каждом движении мышки а показывается при выведении
почему тогда не прятать курсор только при наведении? MouseEvent.MOUSE_OVER так кажется

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

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

Добавлено: 06 фев 2012, 19:49
wapifz
32х32 - маловат будет курсор. В исходнике же у меня не настоящий символ курсора ;)
Сейчас попробую MOUSE_OVER заюзать.

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

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

Добавлено: 07 фев 2012, 02:16
sanych_dv
ROLL_OVER - убираем мышь и показываем свой курсор
MOUSE_MOVE - двигаем курсор
ROLL_OUT - убираем свой курсор и показываем мышь

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

Добавлено: 07 фев 2012, 12:40
wapifz
sanych_dv

Сделал как ты сказал - все равно постоянно он появляется и исчезает.
Сам посмотри.
http://rghost.ru/36386195
Что не так то?

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

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

}

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

Добавлено: 07 фев 2012, 13:38
bodnar
wapifz
ахахах, какая занятная штука, :lol:
что-то тут в uiloader не так
ибо без него этот код работает отлично
а когда над ним прячется курсор он почему то выбрасывает событие MOUSE_OUT

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

Добавлено: 07 фев 2012, 13:48
wapifz
gaponj88
Одно говно.

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

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

UPD
Да нет, этот код и с обычными мувиками не работает корректно.

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

Добавлено: 07 фев 2012, 14:00
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

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

Добавлено: 07 фев 2012, 14:35
wapifz
sanych_dv

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