Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Помогите разобраться с загрузкой клипа (http://www.flasher.ru/forum/showthread.php?t=143102)

ERrorMAKros 06.08.2010 23:45

Помогите разобраться с загрузкой клипа
 
Вложений: 1
Добрый день/вечер,
К сабжу прикреплен attach маленького проекта, который загружает swf файл (в котором существует кнопка, которая реагирует при наведении на нее мышкой), определяет его класс (для дальнейших действий с его property`сами) и добавляет его на форму.

Есть вопросы! Почему после загрузки и добавления .swf`ки в stage не работает класс кнопки определенном внутри загруженной .swf`ки? ...почему вообще загруженная .swf`ка не работает с классами определенными внутри нее.

Заранее благодарен!
Жду ваших замечаний и в целом хотелось бы данную реализацию довести до ума, что бы уже к ней не возвращаться...

ERrorMAKros 07.08.2010 03:50

Человеки, прошу - помогайте, ...потому как я без вариантов (((
Как я уже и рассказывал - смысл моей реализации в том что пытаюсь загрузить из одной "классифицированной" флешки - другую "классифицированную" флешку и работать с ней как с классом. Localconnection (видимо) не подходит, потому что там 40Kb за раз в одну сторону, ...а передо мной, в дальнейшем, задача передавать в другую флеху-класс объемы и по более... Кому лень качать demo файл в первом посте топика, покажу структуру на картинке:
[IMG]http://img265.**************/img265/9393/indexswf.png[/IMG]

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

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

Код кнопки в LOADTHIS_SWF:
Код AS3:

package com {
import flash.display.MovieClip;
import flash.events.*;
import flash.filters.*;
 
public class button extends MovieClip{
        public function button(){
        trace('конструктор', this);
        // при наведении на "себя" - мажем по краям "себя" glow эффект
        this.addEventListener(MouseEvent.ROLL_OVER, ROver); // мышку навели
        this.addEventListener(MouseEvent.ROLL_OUT, ROut); // мышку увели
                } // constructor code
 
        private function ROver(e:MouseEvent):void{
        var myGlow:GlowFilter = new GlowFilter();
            myGlow.color=0xFFFFFF;
            this.filters = [myGlow];
        trace(this, '> over');
        } // ROver
 
        private function ROut(e:MouseEvent):void{
        var myGlow:GlowFilter = new GlowFilter();
            myGlow.color=0x336600;
            this.filters = [myGlow];
        trace(this, '> out');
        } // ROver
        }
}

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

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

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


Добавлено через 59 часов 32 минуты
Люди, есть тут кто живой?


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

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