2013-02-26 4 views
0

Я пытаюсь позволить ребенку прочитать его родительские вары и наоборот. Родитель не имеет никаких проблем чтения ВАР ребенка, но по какой-то причине ребенок получает только «не определено» в качестве ответа ... (вместо «456»)as3 переменная доступа от родительского swf

Родитель сценарий

var mySwf 
var masterVar=456 
function startLoad() { 
    var myLoader:Loader = new Loader(); 
    var mRequest:URLRequest = new URLRequest("test1.swf"); 
    myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
    myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler); 
    myLoader.load(mRequest); 
} 

function onCompleteHandler(loadEvent:Event) { 
    mySwf=loadEvent.currentTarget.content 
    addChild(mySwf); 
    trace(mySwf.slaveVar)//123 
} 

function onProgressHandler(mProgress:ProgressEvent) { 
} 
startLoad() 

Child(test1.swf) сценарий

var slaveVar=123 

trace(Object(parent))//[object Loader] 
trace(Object(parent.parent))//[object Object] 
trace(Object(parent.parent).masterVar)//undefined 
trace(Object(this.parent.parent).masterVar)//undefined 

parent.parent.parent является нулевым и MovieClip (parent.parent) плюет только ошибка

Я понятия не имею, что случилось ... Я что-то упустил?

ответ

3

Попробуйте это:

В детской ФНБ:

var theParent:Object; 
addEventListener(Event.ADDED_TO_STAGE, onAdded); 
function onAdded(e:Event):void 
{ 
    theParent = this.parent as Object 
    trace(theParent.masterVar); 
    //will work after child swf has been added to the display list of the parent file. 
} 
+0

к сожалению, я только получаю следующее сообщение об ошибке: «ReferenceError: Error # 1069: Недвижимость masterVar не найден на flash.display.Loader и там не является значением по умолчанию. \t at test1_fla :: MainTimeline/frame1() " Я сделал это неправильно? _? –

+0

Пожалуйста, см. Отредактированный ответ – strah

+0

ах большое спасибо, не знаю, я должен положить его в eventlistener! работает отлично –

Смежные вопросы