2013-05-16 2 views
0

Я создаю серию мини-игр и анимаций и планирую привести их всех в один флеш-файл. Каждая из игр должна исчезнуть, когда игрок закончил их. Я не знаю, что добавить в раздел во внешних swfs, когда игра будет выполнена. У меня сейчас есть след («закончен»).Когда игра внешнего swf закончена, удалите внешний swf

В моем главном swf вы должны нажать кнопку «Пуск» и появится игра swf, и когда вы закончите ее, она должна исчезнуть.

Я искал учебники, и им было что-то доступ к переменным во внешних swfs, но я нигде не был с ними.

+0

Спасибо, но как я тогда целью этого события от главного швейцарских франков? – sarahmultimedia

+0

Посмотрите здесь http://stackoverflow.com/q/3184623/2332721 – RST

+0

отлично, проблема решена – sarahmultimedia

ответ

2

вместо trace("finished");, отправка что-то вроде полного события:

dispatchEvent(new Event(Event.COMPLETE)); 

Тогда слушать для этого события в контейнере швейцарских франков и реагировать соответствующим образом.

Вот пример для хоста (родитель) швейцарских франков:

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadDone, false,0,true); 
loader.load(new URLRequest("temp2.swf")); 

function loadDone(e:Event){ 
    trace("CONTENT LOADED"); 
    addChild(loader.content); 
    loader.content.addEventListener(Event.COMPLETE,go,false,0,true); //listen on the capture phase (third parameter true) if you're complete event is NOT on the main timeline of your child swf 
} 

function go(e:Event):void { 
    trace("Content is all done"); 
    removeChild(loader.content); 
    loader.unloadAndStop(); //tries to free the app of all memory used by the loaded swf 
    loader = null; 
} 

Другим способа, в месте трассы («закончили»), вы могли бы иметь ребенок швейцарские франки удалить себя (как на комментарий на вопрос). Я считаю, что это менее желательным решением (хотя и более инкапсулируется), поскольку это уменьшает повторную практичность и, вероятно, по-прежнему оставить швейцарские франки в памяти:

stop(); 
if(this.parent){ 
    this.parent.removeChild(this); 
}