Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > Помогите разобраться с загрузкой клипа


Автор: ERrorMAKros 9.8.2010, 13:36
Добрый день/вечер,
К сабжу прикреплен attach маленького проекта, который загружает swf.
Вот, грубо говоря, модель работы приложения:
user posted image

Cмысл этой реализации в том, что бы - загрузить из одной "классифицированной" флешки - другую "классифицированную" флешку и работать с ней как с классом. В моем случае - Localconnection  (видимо) не подходит, потому что там 40Kb за раз в одну сторону, ...а передо мной, в дальнейшем, задача передавать в другую флеху-класс объемы и по более...  Проблема в приложении в следующем - при загрузке в контейнер (index.swf) моего loadthis.swf приложения, не работает кнопка описанная в loadthis.swf ((((

Загрузчик в INDEX_SWF:
Код

package com {
import flash.display.MovieClip;
import flash.utils.ByteArray;
import flash.events.*;
import flash.display.Loader;
import flash.system.LoaderContext;
import flash.system.ApplicationDomain;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
import flash.net.*;
 
public class index extends MovieClip {
    private var urlLoader   : URLLoader;
    private var loader      : Loader;
    private var importClass : *;
 
    public function index(){
        trace('конструктор', this);
        this.urlLoader = new URLLoader();
        this.urlLoader.dataFormat=URLLoaderDataFormat.BINARY;
        this.urlLoader.addEventListener(Event.COMPLETE, completeHandler);
        try   {this.urlLoader.load(new URLRequest('loadthis.swf'));}
        catch (error:Error){trace("Unable to load requested document.");}
        } // index
 
        private function completeHandler(e:Event):void{
        trace(this, '> loaded ..!!');
 
        this.loader = new Loader();
        with(this.loader){
             contentLoaderInfo.addEventListener(Event.COMPLETE, builderHandler);
             loadBytes(e.target.data, new LoaderContext(false, ApplicationDomain.currentDomain));
             } // with(loader)
        } // completeHandler
 
        private function builderHandler(e:Event):void{
        var appDomain:ApplicationDomain = e.target.content.loaderInfo.applicationDomain;
        var mclass: Class = appDomain.getDefinition(getQualifiedClassName(e.target.content)) as Class; 
        if (mclass){
            this.importClass = new mclass();
            this.addChild(this.importClass);
            } // mclass
        } // builderHandler
 
    } // class
} // package


Как ни старайся - после загрузки проекта в index, в загруженной .swf`ке никакой реакции на мышиные события! Конструктор класса button срабатывает только один раз, в загрузчике класса index:
Код

with(this.loader){
contentLoaderInfo.addEventListener(Event.COMPLETE, builderHandler);
loadBytes(e.target.data, new LoaderContext(false, ApplicationDomain.currentDomain)); // вроде тут
} // while


А при создании экземпляра класса загруженного клипа - конструктором кнопки и не пахнет (((
Что делать? У меня паника... 

Автор: ОВиталий 4.10.2010, 20:58
я делал так

Код

var youImportClass : *;

var  loader:Loader = new Loader();

loader.load(...);
loader.contentLoaderInfo.addEventListener(Event.Complate, onComplete);
.....

function onComplete(e:Event):void{
youImportClass = e.currentTarget.loader.content;


(писал по памяти могут быть синтасические ошибки)
дальше работай с ним как с обычным мувиклипом

Автор: ОВиталий 4.10.2010, 20:58
я делал так

Код

var youImportClass : *;

var  loader:Loader = new Loader();

loader.load(...);
loader.contentLoaderInfo.addEventListener(Event.Complate, onComplete);
.....

function onComplete(e:Event):void{
youImportClass = e.currentTarget.loader.content;


(писал по памяти могут быть синтаксические ошибки)
дальше работай с ним как с обычным мувиклипом

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)