Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   не работают евенты MovieClipLoader (as2) когда он подгружен в в as3 (http://www.flasher.ru/forum/showthread.php?t=141093)

kolandi 16.06.2010 11:01

не работают евенты MovieClipLoader (as2) когда он подгружен в в as3
 
Вложений: 1
Итак у меня есть приложение на AS2 которое подгружает внешние файлы при помощи MovieClipLoader

Код AS1/AS2:

var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
var mcContainer:MovieClip = this.createEmptyMovieClip("mcContainer",this.getNextHighestDepth());
mcContainer._alpha = 0;
trace("loader");
 
listener.onLoadStart = function(movie){
        trace("onLoadStart");
}
 
listener.onLoadInit = function(movie){
        trace("onLoadInit");
        mcContainer._alpha = 100;
}
 
loader.addListener(listener);
loader.loadClip("powered_by.jpg",mcContainer);

Все работает нормально, но если компилированный клип подгрузить в AS3 приложение, перестают работать евенты внутри AS2 клипа.

Вот код AS3 на всякий случай:
Код AS3:

var loader:Loader = new Loader();
var urlRequest:URLRequest = new URLRequest("as2Loader.swf");
loader.addEventListener(Event.COMPLETE, _onLoad);
loader.load(urlRequest);
function _onLoad(event:Event):void{
        addChild(loader);
}

Во вложенном вы сможете найти смоделированную ситуацию.

Может кто сталкивался с подобным.

silin 16.06.2010 14:09

есть подозрение, что это очередной косяк IDE-шного компилятора
тоже самое, скомпиленное mxmlc, выдает все как положено
Код AS3:

public class Test extends Sprite
{
        private var loader:Loader;
 
        public function Test():void
        {
                loader = new Loader();
                var urlRequest:URLRequest = new URLRequest("as2Loader.swf");
                loader.load(urlRequest);
 
        }
}
//////////////////
//loader
//onLoadStart
//onLoadInit

ps лишний повод подумать, стоит ли компилить что-то в CS кроме графики

kolandi 16.06.2010 14:18

silin,
Спасибо за ответ, сейчас будем пробовать.

dimarik 16.06.2010 14:32

вот еще + тут

kolandi 16.06.2010 16:49

dimarik,
Спасибо за ответ, проблема близка к прояснению но есть другая беда. В общем если смотреть на эту ситуацию не через компилятор а в уже скомпилированных флешках проблема поворачивается другим боком:

Первый раз все срабатывает нормально, картинка подгружается и евент срабатывает, но вот второй раз уже нет.

Вот слепил наглядный пример: http://tontri.com/demos/loader_problem/

Верхняя флешка это AS2 файл, он работает нормально, а вот нижняя флешка это тот же файл только подгруженный в AS3 контейнер, попробуйте покликать кнопку "Load" и там и там.

dimarik 16.06.2010 17:56

в loadImage сделайте
Код AS1/AS2:

mcContainer.removeMovieClip();
mcContainer = this.createEmptyMovieClip("mcContainer", this.getNextHighestDepth());


kolandi 16.06.2010 19:47

dimarik,
Спасибо огромное, проблема решилась, я в принципе пробовал похожую конструкцию только вместо "removeMovieClip" использовал "unloadMovie" но не работало, а ваш вариант то что доктор прописал, спасибо.

Ф тем кто столкнется с подобной проблемой вод рабочий код:
Код AS1/AS2:

var step:Number = 0;
btnLoad.onPress = function() {
        loadImage();
        step++;       
        if(step == 2)step = 0;
}
var loader:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
var mcContainer:MovieClip;
var imgURL:Array = new Array("images/firstImage.jpg","images/secondImage.jpg")
 
listener.onLoadStart = function(movie){
        trace("onLoadStart");
        log.htmlText = log.htmlText+"onLoadStart"+"<br/>";
}
 
listener.onLoadInit = function(movie){
        trace("onLoadInit");
        log.htmlText = log.htmlText+"onLoadInit";
        mcContainer._y = log._y+log._height;
}
 
loader.addListener(listener);
 
function loadImage():Void{
        trace("loader");
        if(mcContainer)mcContainer.removeMovieClip();
        mcContainer = this.createEmptyMovieClip("mcContainer",this.getNextHighestDepth());
        log.htmlText = "Load image: "+imgURL[step]+"<br/>";
        loader.loadClip(imgURL[step],mcContainer);
}



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

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