Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   загрузка swf и размещение на сцене несколько раз (http://www.flasher.ru/forum/showthread.php?t=123541)

Summer_sun 03.04.2009 21:22

загрузка swf и размещение на сцене несколько раз
 
Вложений: 1
Нужно загрузить файл logo.swf и размножить 4 раза на сцене. Делаю так:
Код AS3:

var loader:Loader;
var numOfItems:Number=4;
 
loader=new Loader();
 
loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
var urlRequest:URLRequest=new URLRequest("logo.swf");
loader.load(urlRequest);
 
function initListener(e:Event):void {
 
        for (var i:Number=0; i<numOfItems; i++) {
                var myclip:MovieClip = new mymc();
                myclip.addChild(loader.content);
 
                myclip.width=40+i;
                myclip.height=40+i;
                myclip.x=40+i;
                myclip.y=40+i;
 
                addChild(myclip);
 
        }
}

Код AS3:

mymc

пустой клип в библиотеке
Логотип загружается, но отображается 1 раз. С простой картинкой получается, а в чем тут проблема не пойму.

BlooDHounD 03.04.2009 21:28

один и тот же клип нельзя отобразить в несольких контэйнера. он у вас отображается только в последнем

willis83 03.04.2009 21:33

по поводу присваивания координат логотипу, 40 плюс минус 4 не значительно.... может стоит умножать?? Может они ложатся друг на друга? И не пойму зачем ширину, высоту менять на пару пикселей....

Summer_sun 03.04.2009 21:33

подскажите что сделать пожалуйста

с другими координатами он тоже один.

BlooDHounD 03.04.2009 23:01

склонировать содержание. либо через Loade.loadBytes, либо через Loader.loaderInfo.getDefinition. первый способ работает медленее и жрёт больше памяти

Summer_sun 05.04.2009 16:57

делала по книге Мука ActionScript 3.0 для Flash (с 871)
Код AS3:

var loader:Loader;
 
loader=new Loader();
 
var urlRequest:URLRequest=new URLRequest("logo.swf");
loader.load(urlRequest);
 
loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
function initListener(e:Event):void {
 
        var logoClassName:String=getQualifiedClassName(e.target.content);
        var appDomain:ApplicationDomain=e.target.content.loaderInfo.applicationDomain;
        var logoClass:Class=appDomain.getDefinition(logoClassName);
 
 
        var newlogo:Object = new LoadedClass();
        addChild(newlogo);
 
}

но не работает :(

Код AS3:

var logoClass:Class=appDomain.getDefinition(logoClassName);

на эту строку ругается 1118: Implicit coercion of a value with static type Object to a possibly unrelated type Class.


видела еще на форуме такую констуркцию

Код AS3:

loader.contentLoaderInfo.applicationDomain.getDefinition("LoadedClass") as Class;

и пример с такой конструкцией к описанию AS 3.0. на сайте Adobe , но тоже не получается. Мне знаний конечно не хватает и опыта, но разобраться с размножением подгружаемого клипа для меня очень нужно.

BlooDHounD 05.04.2009 17:26

а почему ему не ругаться? getDefinition возвращает Object. а Вы его пытаетесь присвоить переменной типа Class. в ошибки написано что он не умеет конвертировать один тип в другой. для исправления ошибки используется оператор as.

Summer_sun 05.04.2009 17:40

Код AS3:

var loader:Loader;
var numOfItems:Number=3;
 
loader=new Loader();
 
var urlRequest:URLRequest=new URLRequest("logo.swf");
loader.load(urlRequest);
 
loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
function initListener(e:Event):void {
 
        var logoClassName:String=getQualifiedClassName(e.target.content);
        var appDomain:ApplicationDomain=e.target.content.loaderInfo.applicationDomain;
        var logoClass:Class=appDomain.getDefinition(logoClassName) as Class;
 
 
        var newlogo:Object = new LoadedClass();
        addChild(newlogo);
 
}

так?
теперь оно ругается на следующую строчку
Код AS3:

var newlogo:Object = new LoadedClass();

1180: Call to a possibly undefined method LoadedClass.

а у Мука вот что
Цитата:

var ModuleClassName:String = getQualifiedClassName(e.target.content):
var appDomain:ApplicationDomain =
e.target.content.1oaderInfо.applicati onDomai n;
// После выполнения следующей строки кода переменная ModuleClass будет
// ссылаться на основной класс приложения Module.swf
var ModuleClass:CIass = appDomain.getDefinition(ModuleClassName);
Получив ссылку на класс Module, мы можем использовать ее для создания новых
объектов:
var newModule:Object = new ModuleClass( );

BlooDHounD 05.04.2009 17:48

откуда вы взяли переменную LoadedClass?

Summer_sun 05.04.2009 18:07

ой :)
Код AS3:

var loader:Loader;
 
 
loader=new Loader();
 
var urlRequest:URLRequest=new URLRequest("logo.swf");
loader.load(urlRequest);
 
loader.contentLoaderInfo.addEventListener(Event.INIT, initListener);
function initListener(e:Event):void {
 
        var logoClassName:String=getQualifiedClassName(e.target.content);
        var appDomain:ApplicationDomain=e.target.content.loaderInfo.applicationDomain;
        var logoClass:Class=appDomain.getDefinition(logoClassName) as Class;
 
 
        var newlogo:Object = new logoClass();
        addChild(newlogo);
 
}

вообщем теперь оно ругается только на последнюю строчку
1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:DisplayObject.


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

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