Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Меняем курсор на собственный (http://www.flasher.ru/forum/showthread.php?t=143183)

Dr_Bra 09.08.2010 20:15

Меняем курсор на собственный
 
рисуем новый курсор, указываем ему инстенс: Hand_coursor
В главном классе пишем
Код AS3:

Mouse.hide();
_handMouse = new Hand_coursor();                                               
_stage.addChild(_handMouse);
_stage.addEventListener(Event.ENTER_FRAME, handMouse);

Код AS3:

private function handMouse(evt:Event):void
{
        _handMouse.x = mouseX;
        _handMouse.y = mouseY;
}

только вот этот _handMouse перекрывает сам спрятаный курсор и все кнопки приложения не доступны.
Подскажите, как сделать правильный "свой курсор"

fljot 09.08.2010 20:36

Код:

handMouse.mouseEnabled = false;
handMouse.mouseChildren = false;


arkadattx 09.08.2010 20:39

И лучше все это делать без обращения к stage-у. Юзайте контейнер - возможно будет меньше проблем с очисткой памяти...

Dr_Bra 09.08.2010 20:51

Ясненько, спасибо за ответы!

fljot 09.08.2010 22:15

да, только не Event.ENTER_FRAME, а MouseEvent.MOUSE_MOVE + event.updateAfterEvent() + по правому клику курсор станет видным + убирать кастомный курсор при покидании сцены

Wolsh 10.08.2010 02:04

И добавить слушатель в стейдж на событие ADDED, чтобы забрасывать курсор наверх при добавлении новых объектов в один с ним контейнер/забрасывать его контейнер наверх при добавлении объектов на стейдж..

Dr_Bra 10.08.2010 12:48

следуя Вашим советам, сделал тестовый файл, что бы протестировать события MOUSE_LEAVE и updateAfterEvent. Но на событие MOUSE_LEAVE объект не удаляется со сцены

Код AS3:

package 
{
        import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.ui.Mouse;
 
    public class Ml extends Sprite
        {
        private var cursor;
 
        public function Ml()
                {
            cursor = new Obj();
            addChild(cursor);
 
            stage.addEventListener(Event.MOUSE_LEAVE, curcorLeave);
            stage.addEventListener(MouseEvent.MOUSE_MOVE, cursorFollow);
            Mouse.hide();
        }
 
        public function curcorLeave(evt:Event):void
                {
            stage.removeChild(cursor);
        }
 
        public function cursorFollow(evt:MouseEvent):void
                {
            cursor.x = stage.mouseX;
            cursor.y = stage.mouseY;
            evt.updateAfterEvent();
        }
    }
}

Добавлено через 27 минут
или это только у меня не работает?)

Wolsh 10.08.2010 19:04

Прежде чем удалять, неплохо бы добавить.

Dr_Bra 11.08.2010 12:13

добавили же
Код AS3:

  addChild(cursor);

код работает в cs4, а в cs5 не работает, вот это нам поставили обновления на работе ))

Wolsh 11.08.2010 12:32

Код AS3:

public class Ml extends Sprite
{
    ....
    public function Ml()
    {
            cursor = new Obj();
            addChild(cursor);
    }
}

Код AS3:

stage.removeChild(cursor);

Отдал конфеты Маше, а требуешь вернуть - у Васи.

Добавлено через 6 минут
Все это потерянное время тебе бы с легкостью сэкономил человеческий компилятор. В ФД с флекс_сдк твой код никогда бы не был скомпилирован, это Флэш ИДЕ пропускает миллионы ошибок.


Часовой пояс GMT +4, время: 15:04.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.