Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Обращение к stage.stage* (http://www.flasher.ru/forum/showthread.php?t=142369)

Maraekb 19.07.2010 18:13

Обращение к stage.stage*
 
К курсору в библиотеке добавил класс Cursor
Код AS3:

package 
{
        import flash.display;
        import flash.display.*;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.ui.Mouse;
 
        public class Cursor extends MovieClip
        {
/* * * * * * * * * *
*                  *
*  @author wolsh  *
*                  *
\* * * * * * * * * */

 
                public function Cursor()
                {
                        addEventListener(Event.ADDED_TO_STAGE, init);
                        addEventListener(Event.REMOVED_FROM_STAGE, remove);
                        trace(stage.stageHeight , stage.stageWidth)// ошибка
                }
 
                private function init(event:Event):void
                {
                        this.removeEventListener(Event.ADDED_TO_STAGE, init);
                        stage.addEventListener(Event.ADDED, onTop);
                        stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
                        Mouse.hide();
                        this.mouseEnabled = false;
                        this.x = stage.mouseX;
                        this.y = stage.mouseY;
                        onTop();
                }
 
                private function remove(evt:Event):void
                {
                        this.removeEventListener(Event.REMOVED_FROM_STAGE, remove);
                        stage.removeEventListener(MouseEvent.MOUSE_MOVE, onMove);
                        stage.removeEventListener(Event.ADDED, onTop);
                        Mouse.show();
                }
 
                private function onMove(event:MouseEvent):void
                {
                        this.x = event.stageX;
                        this.y = event.stageY;
                        event.updateAfterEvent();
                }
                public function onTop(event:Event = null):void
                {
                        if (stage.getChildIndex(this) != stage.numChildren - 1)
                        {
                                stage.setChildIndex(this, stage.numChildren - 1);
                        }
                        Mouse.hide();
                }
 
        }
 
}

Но при обращении к stage.stageHeight или stage.stageWidth вылазит ошибка
Цитата:

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

Zik. 19.07.2010 18:16

А если в ините потрейсить?

Maraekb 19.07.2010 18:19

:rolleyes:тупнул:rolleyes:

Добавлено через 2 минуты
Щас трэйсится но появилась новая ошибка
Цитата:

ArgumentError: Error #2025: Предоставленный DisplayObject должен быть дочерним элементом вызывающего объекта.
at flash.display::DisplayObjectContainer/getChildIndex()
at Cursor/onTop()
at flash.display::DisplayObjectContainer/addChild()
at tesla::Main/pos_obj()
at tesla::Main()
она о чём говорит? как её исправить можно

-De- 19.07.2010 18:23

Строку с ошибкой в инит перенести, до того как ADDED_TO_STAGE прийдёт stage есть null, потому-то на ADDED_TO_STAGE подписываются, а не просто в конструкторе инит вызывают.

Zik. 19.07.2010 18:28

А зачем вам два раза вызывать функцию onTop()?

Maraekb 19.07.2010 18:35

Класс не мой там даже авторство есть)))
Ошибка как разпосле вызова onTop() появляется.
я несильно понимаю то что там описано поэтому чёто немогу понять в чём и где там ошибка(((

Hidest 20.07.2010 02:22

а вы сам курсор добавили на сцену?

Maraekb 20.07.2010 02:26

Естественно)) Без добавления ничего бы неработало))) Ошибка как мне кажется в строке
Код AS3:

stage.getChildIndex(this)

и
Код AS3:

stage.setChildIndex(this, stage.numChildren - 1)

а как справить незнаю( незнаю на что заменить this

Zik. 20.07.2010 11:30

В чем разница строчек
Код AS3:

addEventListener(Event.REMOVED_FROM_STAGE, remove);

и
Код AS3:

stage.addEventListener(Event.ADDED, onTop);

если все равно смотрится лишь наличие объекта на stage?


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

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