загрузка внешних as2 фильмов - PullRequest
0 голосов
/ 06 июля 2011

Мне нужно загрузить файл SWF в новый фильм SWF. Мне нужно проверить последний кадр, чтобы начать клип, и т. Д. Все работает нормально в приведенном ниже коде. Я использовал as3 и загружал также внешний фильм as3 swf. Проблема началась, когда я попытался загрузить внешние as2 swf фильмы при получении сообщения: TypeError: Error #1034: Type Coercion failed: cannot convert flash.display::symbol_name to flash.display.MovieClip. Есть ли способ, которым я могу преобразовать следующий код в as2 ???? Есть ли другой способ? Обратите внимание, что я абсолютный новичок во Flash, и я изо всех сил старался сделать это в as3, и теперь я не вижу другой альтернативы, кроме как использовать as2 !!! Большое спасибо!

var swfLoader:Loader = new Loader();
var swfFile:URLRequest = new URLRequest("file.swf");
var container:MovieClip= new MovieClip();

swfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoadedHandler);

var currentSWF:MovieClip = new MovieClip();

swfLoader.load(swfFile);

container.addChild(swfLoader);
addChild(container); 

function swfLoadedHandler(e:Event):void {
    currentSWF = MovieClip(swfLoader.content);  
    currentSWF.addEventListener(Event.ENTER_FRAME, checkLastFrame);

    function checkLastFrame(e:Event):void { 
        if (currentSWF.currentFrame == currentSWF.totalFrames) {
            currentSWF.stop();
            bob.play();
            if (bob.currentFrame == 2) {
                bob.stop();
            }
        }    
    }
}

1 Ответ

0 голосов
/ 06 июля 2011

Хороший ответ на вопрос о загрузке контента AS2 в AS3 можно найти здесь: Загрузите AS2 SWF в AS3 SWF и передайте переменные в URL . По сути, вам нужно будет создать загрузчик моста в AS2, если вы не можете редактировать загружаемый контент AS2.

Редактировать: Этот (непроверенный) код должен делать то, что вам нужно в AS2:

import mx.utils.Delegate;

var mcLoader:MovieClipLoader = new MovieClipLoader();
mcLoader.onLoadComplete = Delegate.create(this, loadComplete);
var targetMC:MovieClip = createEmptyMovieClip("container",getNextHighestDepth();
mcLoader.loadClip("file.swf",targetMC);

function loadComplete(evt:Object):Void {
    targetMC.onEnterFrame = Delegate.create(this,checkFrame);
}

function checkTargetFrame(evt:Object):Void {
    if(targetMC._totalframes == targetMC._currentframe) {
        targetMC.stop();
        targetMC.onEnterFrame = null;
        bob.onEnterFrame = Delegate.create(this,checkBobFrame);
        bob.play();
    }
}

function checkBobFrame(e:Object):Void {
    if(bob._currentframe == 2) {
        bob.onEnterFrame = null;
        bob.stop();
    }
}
...