Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Работа с stage, обязательно ли добавлять в него контейнер типа sprite (http://www.flasher.ru/forum/showthread.php?t=136660)

Killer_13 22.02.2010 19:20

Работа с stage, обязательно ли добавлять в него контейнер типа sprite
 
Прив всем.
Хочу убрать масштабирование флешки.
Делаю

Код AS3:

import flash.display.StageScaleMode;
 
                public function MainScreen (){
                        stage.scaleMode = StageScaleMode.NO_SCALE;
 
                }

при этом
Код AS3:

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

мое мнение - это может быть из-за того, что я не добавлял свой главный контейнер, в котором все отображается на stage , а просто добавил его
Код AS3:

addChild(contaier);

может правильно переписать
Код AS3:

stage.addChild(contaier);

и все заработает?


Подскажите как исправить...

wvxvw 22.02.2010 19:30

Искать по ключу Event.ADDED_TO_STAGE.

Killer_13 22.02.2010 20:12

Чет не оч работает..
Или я неправильно понял работу команды

Я хочу, чтоб когда я скомпилирую проект - исчезла возможность растягивать ролик. У меня к примеру размеры 900 на 500, и я хочу, чтоб они так и оставались без изменений. Чтоб пользователь не смог расширить окно.
Код AS3:

                public function MainScreen (){
 
                        if(stage) init();
                                  else addEventListener(Event.ADDED_TO_STAGE, init);
 
 
                }
 
//-----------------------------------------------------------
 
                private function init(event:Event=0):void{
 
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        lobbyBtn();
                        optBtn();
                        exitBtn();
                        player();
                }

Отключение меню клика правой клавишей работает.
Код AS3:

stage.showDefaultContextMenu = false;


wvxvw 22.02.2010 20:21

http://flasher.ru/forum/showthread.p...ADDED_TO_STAGE

Killer_13 22.02.2010 20:27

... Насколько я понимаю, stage у меня определяется, поскольку этот код работает.
Код AS3:

                private function init(event:Event=null):void{
 
                        stage.scaleMode = StageScaleMode.NO_SCALE;//эта не работает..
                        stage.showDefaultContextMenu = false;//Эта строка работает
                        lobbyBtn();
                        optBtn();
                        exitBtn();
                        player();
                }

а первый свой контейнер, я добавляю в
Код AS3:

private function lobbyBtn(){
 
                        var lab:TextField = crLabel(37,70,95,35,"LOBBY");
 
                        Btn1.x = 95;
                        Btn1.y = 88;
 
                        btn_Box1.addChild(Btn1);
                        btn_Box1.addChild(lab);
                        addChild(btn_Box1);
 
                        btn_Box1.addEventListener(MouseEvent.ROLL_OVER, over_Btn);
                        btn_Box1.addEventListener(MouseEvent.ROLL_OUT, out_Btn);
                        btn_Box1.addEventListener(MouseEvent.CLICK, box);
                }


wvxvw 22.02.2010 20:38

OK, событие называется ADDED_TO_STAGE, что в переводе на общедоступный значит - "добавлен на сцену". По-моему, из названия события очевидно зачем оно нужно - просигналить, когда объект попал в дисплей лист.

Killer_13 22.02.2010 20:46

Я так понимаю, вы меня хотите навести на правильный ответ, что есть очень хорошо.
Но я написал, все что понял из ваших подсказок, и прошу помочь подправить в коде то, что я хочу осуществить...

Добавлено через 54 минуты
=========================

Ну вот никак не пойму, почему

Код AS3:

                        stage.scaleMode = StageScaleMode.NO_SCALE;//НЕ работает!!!
                        stage.align = StageAlign.TOP_LEFT;//работает
                        stage.showDefaultContextMenu = false;//работает

подскажите... :(

wvxvw 22.02.2010 22:25

Код AS3:

package tests 
{
        //{ imports
        import flash.display.Sprite;
        import flash.events.Event;
        //}
 
        /**
        * Main class.
        * @author wvxvw
        * @langVersion 3.0
        * @playerVersion 10.0.32
        */

        public class Main extends Sprite
        {
                //--------------------------------------------------------------------------
                //
                //  Constructor
                //
                //--------------------------------------------------------------------------
 
                public function Main()
                {
                        super();
                        // если stage доступен - значит этот класс был добавлен на сцену из timeline
                        if (super.stage) this.addedToStageHandler(null);
                        // в противном случае - подождем
                        else super.addEventListener(
                                Event.ADDED_TO_STAGE, this.addedToStageHandler);
                }
 
                //--------------------------------------------------------------------------
                //
                //  Protected methods
                //
                //--------------------------------------------------------------------------
 
                protected function addedToStageHandler(event:Event):void
                {
                        // Entry point
                }
        }
}


Killer_13 23.02.2010 01:05

Сделал так как вы написали, - но результат прежний...

Не в обиду, но мне кажется что вы не дочитали до конца в чем вопрос, и что у меня не получается...
Или я совсем нуб, если это так, то прошу прощения, что морочу голову...

Код AS3:

                public function Main() {
 
                        super();
                        // если stage доступен - значит этот класс был добавлен на сцену из timeline
                        if (super.stage) this.addedToStageHandler(null);
                        // в противном случае - подождем
                        else super.addEventListener(
                                Event.ADDED_TO_STAGE, this.addedToStageHandler);
 
 
                }
 
                protected function addedToStageHandler(event:Event):void
{
                        removeEventListener(Event.ADDED_TO_STAGE, init);
 
                        stage.scaleMode = StageScaleMode.NO_SCALE;// не работает!!!
                        stage.align = StageAlign.TOP_LEFT;// работает
                        stage.showDefaultContextMenu = false;// работает
 
                        var scrTimer:Timer = new Timer(1000, 1);
 
                        scrTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onTimerComplete);
 
                        scrTimer.start();
                        addChild(fon);
 
                }


GentleFLASH 23.02.2010 01:16

В смысле не работает? Все так же ошибки выдает?

Кстати removeEventListener(Event.ADDED_TO_STAGE, init) почему то снимается с функции init, а не с addedToStageHandler..


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

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