Форум 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=168419)

Vansimar 20.09.2011 18:42

Проблема с пользовательским курсором
 
есть класс для курсора
Код AS3:

package src{
 
    import flash.display.MovieClip;
    import flash.display.DisplayObject;
        import flash.events.Event;
    import flash.events.MouseEvent;
        import flash.ui.Mouse;
 
    public class Cursor extends MovieClip {
 
        private var cursor:MovieClip;
 
 
        public function Cursor( _stage:DisplayObject, _cursor:MovieClip )
                {
 
                        cursor = _cursor;
                        addChild( cursor );
 
                        _stage.addEventListener( Event.MOUSE_LEAVE, cursorHide );
                        _stage.addEventListener( MouseEvent.MOUSE_MOVE, cursorFollow );
                        Mouse.hide();
 
        }
 
        private function cursorHide( evt:Event ):void
                {
                        //Mouse.hide();
            cursor.visible = false;
        }
 
        private function cursorFollow( evt:MouseEvent ):void
                {
            if ( !cursor.visible ) cursor.visible = true;
            cursor.x = stage.mouseX;
            cursor.y = stage.mouseY;
            evt.updateAfterEvent();
                }
    }
}

и в классе Main я его вызываю
Код AS3:

package src
{
        import src.*;
 
        import flash.display.*;
        import adobe.utils.ProductManager;
        import flash.events.*;
 
        public class  Main extends MovieClip
        {
                public function Main()
                {
 
                        if (stage) init();
                        else stage.addEventListener(Event.ADDED_TO_STAGE, init);
 
 
 
                }
                private function init(e:Event = null):void
                {
                        addChild( new Cursor( stage, new Lip() ) );
                }
        }
 
}

и вылетает ошибка TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at src::Main()
с чем это может быть связано?

goodguy 20.09.2011 18:54

Все просто:
Код AS3:

if (stage) init(); // если сцена доступна, инициализируем
else stage.addEventListener(Event.ADDED_TO_STAGE, init); // если она не доступна, то добавляем к недоступной сцене, т.е. к "ничему" слушатель

правильно так:
Код AS3:

if (stage) init();
else this.addEventListener(Event.ADDED_TO_STAGE, init);

А тут:
Цитата:

_stage:DisplayObject
правильнее будет
Код AS3:

 _stage:DisplayObjectContainer



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

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