Форум Flasher.ru

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

Dr_Bra 02.07.2010 14:57

обращение к stage из дополнительного класса
 
в главном классе создаю объекты, располагаю их на сцене

Код AS3:

package
{
        import flash.display.*;
        import flash.events.Event;
        //import MoveObj.*;
 
        public class WebSite extends MovieClip
        {
                public var layer1:Full_tree;
                public var layer2:Bush;
                public var layer3:Cloud;
                public var moveL:MoveObj;
 
                public function WebSite():void
                {
                        if(stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
                private function init(evt:Event = null):void
                {
                        trace(stage.stageHeight)
 
                        layer3=new Cloud();
                        stage.addChild(layer3);
                        layer3.x=stage.stageWidth/1.5;
                        layer3.y=stage.stageHeight/2;
 
                        layer2=new Bush();
                        stage.addChild(layer2);
                        layer2.x=stage.stageWidth/2;
                        layer2.y=stage.stageHeight+200;
 
                        layer1=new Full_tree();
                        stage.addChild(layer1);
                        layer1.x=stage.stageWidth/2;
                        layer1.y=stage.stageHeight;
 
                        moveL=new MoveObj();
                }
        }
}

делаю дополнительный класс, который будет двигать созданные объекты, но не получается обратиться к сцене
Код AS3:

package
{
        import flash.events.Event;
        import flash.display.*;
 
        public class MoveObj
        {               
                public function MoveObj()
                {
                        trace(stage.stageHeight)                       
                }
        }
}


Bgg 02.07.2010 15:06

Передайте ссылку на stage в класс MoveObj
Код AS3:

moveL=new MoveObj(stage);
//
public function MoveObj(stage:Stage)
{
        trace(stage.stageHeight)                       
}


Dr_Bra 02.07.2010 15:14

спасибо за совет, получилось!

Добавлено через 14 минут
Цитата:

Сообщение от Bgg (Сообщение 919445)
Передайте ссылку на stage в класс MoveObj

пытаюсь передать подобным способом ссылки на объекты, не получается:
Код AS3:

moveL=new MoveObj(stage,layer3,layer2,layer1);
//
 
public function MoveObj(stage:Stage,layer1:Full_tree,layer2:Bush,layer3:Cloud)

или нужно писать так:
Код AS3:

public function MoveObj(stage:Stage,layer1:MovieClip,layer2:MovieClip,layer3:MovieClip)

Добавлено через 45 минут
разобрался, всем спасибо!

3p.station 23.07.2010 01:45

привет
я вот тоже столкнулся с такой задачей

передаю stage при вызове функции из другого класса = не принимает

так как в предидущем примере

udaaff 23.07.2010 01:47

Что значит "не принимает"? Какая ошибка? Код?

3p.station 23.07.2010 01:56

в классе коснтруктора создаю экземпляр другого класса и вызываю функцию
(на сцене уже полно всего)

Код AS3:

var _scrllBar:_scrllBar = new _scrllBar();                                
 
_scrllBar.addScrollBar(stage);
 
addChild(_scrllBar);

в другом принимаю

Код AS3:

 
              var _stage:Stage;
                public function addScrollBar(_stage:Stage)
                        {
 
                                this._stage = _stage;
                }

:rolleyes:

udaaff 23.07.2010 02:17

Код AS3:

var _scrllBar:_scrllBar = new _scrllBar();

Переменную как-то по-другому, видимо, назвать надо.
trace(stage) что говорит?
Названия классов пишутся с большой буквы и без всяких черточек. Локальные переменные и параметры тоже без знака подчеркивания.

3p.station 23.07.2010 02:51

ой
это я тут писал не копировал и ошибся
а подчеркиваю я экземпляры и переменные которые приходят в параметрах
(а вот с классами никак не привыкну)
итак делаю трейс


в классе конструкторе перед вызовом функции
Код AS3:

trace(stage);
_scrllBar.addScrollBar(stage);

==== [object Stage]

в классе приемнике
Код AS3:

var _stage:Stage;
                public function addScrollBar(st:Stage)
                        {
                                trace(st);
                                _stage = st;
 
                }

==== пусто даже нету пробела

мистерика :wacko:

udaaff 23.07.2010 02:58

Цитата:

==== пусто даже нету пробела
Видимо, trace(st), вообще, не вызывается.

3p.station 23.07.2010 03:04

:eek:
иногда трейсится [object Stage]

(не я проверял простым трейсом функция вызывается)

Добавлено через 42 секунды
в классе конструктора трейс идет каждый раз
а вот в вызываемом классе как то странно

Добавлено через 8 минут
голова моя друшляк

я вызывал функцию в которой вешал листненр на стейдж перед тем как было присвоение
появлялась ошибка поэтому и трейса не было
а когда закомментил эту функцию чтобы не мешала пока трейс появился

урра все работает
udaaff извините что ломал вам мозк
спаисбо огромное за поддержку


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

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