Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   SCOPE и загрузка ролика swf (http://www.flasher.ru/forum/showthread.php?t=100434)

antonimo 27.08.2007 19:27

SCOPE и загрузка ролика swf
 
Всем привет! :)
Столкнулся с такой проблемой: загружаю с помощью Loader ролик swf.
он начинает проигрываться, нормально, но проблема в том, что он не видит переменных и SCOPE PARENT ролика в который я его добавил.
Как быть может есть другие способы загрузки ролика? в AS2 это можно было сделать .

etc 27.08.2007 19:44

А подгружаемый ролик какой версии?

antonimo 28.08.2007 17:34

Ролик версии 9.0, Flash CS3

Dendroid 28.08.2007 18:03

1. Возможно переменные protected.
2. Возможно надо дождаться события INIT (parent доступен только после этого события, а не сразу после загрузки).
3. Может быть parent - это не тот объект, что Вы думаете (этот parent: loaderInfo.loader.parent?)
4. Возможно это cross domain проблемы.

Другого способа загрузки нет, надо искать в этом...

antonimo 29.08.2007 07:37

событие инит, это идея. Посмотрю... пасиб

antonimo 29.08.2007 11:33

узнал что root в загружаемом ролике это его собственный root, а вот stage вроде один у всего проекта.
Удалось передать загружаемому ролику переменную MovieClip, например mc, которая является parent загружаемого ролика, тобишь внего вставляется.

допустим у этого parent было объявлена переменная var1.
Внутри загружаемого ролика после события ADDED_TO_STAGE обращаюсь к mc.var1 и flash меня посылает, не работает. Что делать, хз :(((((

Может попробовать описать класс, с теми данными, которые мне нужны, туда их забить, загрузить ролик и передать ему экземпляр этого класса.
А в загружаемом ролике сделать import описания этого класса, чтоб сука флэш знал что к чему, и захавать этот экземпляр, который передаст перент. Как думаете? бред.... или нет?

Можно ли к объектам сцены обращаться не через точку, а как нить по другому? как нить ["object_name"] или еще как?

etc 29.08.2007 13:28

antonimo, ещё раз я увижу более двух постов подряд — буду ставить плюсы.
Посты нужно редактировать, если надо что-то добавить.

silin 29.08.2007 15:29

Цитата:

Сообщение от antonimo
допустим у этого parent было объявлена переменная var1.
Внутри загружаемого ролика после события ADDED_TO_STAGE обращаюсь к mc.var1 и flash меня посылает, не работает. Что делать, хз :(((((

Может попробовать описать класс..

имхо так и надо, все логично тогда..
main.swf(Main.as) грузит child.swf (Child.as)
"init" MovieClip что-то не генерит (и не должен по документации), "added" тоже не при делах оказалось..
повесил на "enterFarme"
Код:

package {
        import flash.display.Loader;
        import flash.display.MovieClip;
        import flash.net.URLRequest;

        public class Main extends MovieClip{
                public var var1:String="var 1";
                public function Main(){
                        var loader:Loader=new Loader();
                        loader.load(new URLRequest("child.swf"));
                        addChild(loader);
                }
        }
}

Код:

package {
        import flash.display.MovieClip;
        import flash.events.*;
        public class Child extends MovieClip{
                public function Child(){
                        addEventListener(Event.ENTER_FRAME,enterFrame);
                }
                private function enterFrame(evnt:Event){
                        trace(parent);//[object Loader]
                        var main:Main=parent.parent as Main;
                        trace(main);//[object Main]
                        if(main){
                                trace(main.var1);//var 1
                        }
                        removeEventListener(Event.ENTER_FRAME,enterFrame);
                }
        }
       
}


Dendroid 29.08.2007 16:16

У меня примерно так работало:
Код:

loaderInfo.addEventListener(Event.INIT, initHandler);
function initHandler (event:Event) {
        if (loaderInfo.loader!=null) { // проверяем, что мувик загружен, а не запущен сам по себе
                var var1 = loaderInfo.loader.parent.var1;
       
        }
}

Можно и так обращаться:
Код:

loaderInfo.loader.parent["var"+1]
и так проверять, чтобы быть уверенным:
Код:

loaderInfo.loader.parent.hasOwnProperty("var1")

etc 29.08.2007 16:29

А я бы интерфейс бы прикрутил ко всему этому…


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

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