![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2007
Сообщений: 6
|
Всем привет!
![]() Столкнулся с такой проблемой: загружаю с помощью Loader ролик swf. он начинает проигрываться, нормально, но проблема в том, что он не видит переменных и SCOPE PARENT ролика в который я его добавил. Как быть может есть другие способы загрузки ролика? в AS2 это можно было сделать . |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А подгружаемый ролик какой версии?
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 6
|
Ролик версии 9.0, Flash CS3
|
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
1. Возможно переменные protected.
2. Возможно надо дождаться события INIT (parent доступен только после этого события, а не сразу после загрузки). 3. Может быть parent - это не тот объект, что Вы думаете (этот parent: loaderInfo.loader.parent?) 4. Возможно это cross domain проблемы. Другого способа загрузки нет, надо искать в этом...
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 6
|
событие инит, это идея. Посмотрю... пасиб
|
|
|||||
|
Регистрация: Aug 2007
Сообщений: 6
|
узнал что root в загружаемом ролике это его собственный root, а вот stage вроде один у всего проекта.
Удалось передать загружаемому ролику переменную MovieClip, например mc, которая является parent загружаемого ролика, тобишь внего вставляется. допустим у этого parent было объявлена переменная var1. Внутри загружаемого ролика после события ADDED_TO_STAGE обращаюсь к mc.var1 и flash меня посылает, не работает. Что делать, хз ((((Может попробовать описать класс, с теми данными, которые мне нужны, туда их забить, загрузить ролик и передать ему экземпляр этого класса. А в загружаемом ролике сделать import описания этого класса, чтоб сука флэш знал что к чему, и захавать этот экземпляр, который передаст перент. Как думаете? бред.... или нет? Можно ли к объектам сцены обращаться не через точку, а как нить по другому? как нить ["object_name"] или еще как? Последний раз редактировалось etc; 29.08.2007 в 13:28. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
antonimo, ещё раз я увижу более двух постов подряд — буду ставить плюсы.
Посты нужно редактировать, если надо что-то добавить. |
|
|||||
|
Цитата:
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);
}
}
}
|
|
|||||
|
Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
|
У меня примерно так работало:
loaderInfo.addEventListener(Event.INIT, initHandler);
function initHandler (event:Event) {
if (loaderInfo.loader!=null) { // проверяем, что мувик загружен, а не запущен сам по себе
var var1 = loaderInfo.loader.parent.var1;
}
}
и так проверять, чтобы быть уверенным:
__________________
Верить никому нельзя. Мне - можно. :) |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А я бы интерфейс бы прикрутил ко всему этому…
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:21. |
|
|
« Предыдущая тема | Следующая тема » |
|
|