AS2 SWF работает автономно, но когда он включен в AS3 SWF (даже если он загружен ТОЛЬКО), он действует странно, есть идеи? - PullRequest
0 голосов
/ 17 февраля 2011

Я знаю, что есть несколько сообщений о загрузке ASF SWF в AS3 SWF, но ни одна не дает решения! У меня есть отдельная галерея изображений с использованием файла XML, которую я загрузил в AS3 SWF.

Галерея прекрасно работает сама по себе, но при загрузке в AS3 SWF она не меняет основное изображение! Я создал новый AS3 SWF и имел ТОЛЬКО код для загрузки этой галереи AS2 в фильм AS3, ничего больше, и все же он отказывался менять большое изображение при нажатии на миниатюры. Галерея в основном работает отлично, это ТОЛЬКО большое изображение, которое не работает. Кто-нибудь может помочь в этом? Вот мой основной код галереи AS2, кто-то может обнаружить что-то, что может быть причиной ошибки?

import mx.transitions.Tween;
import mx.transitions.easing.*;

var my_xml = new XML();
my_xml.ignoreWhite = true;

my_xml.onLoad = function(success){
    if(success){
        doGallery();
        }
    else{
        null;
        }
    }

my_xml.load("xml/gallery.xml");

function doGallery(){

    var imgTitles:Array = my_xml.firstChild.childNodes[0].attributes.imgtitles.split("|");
    var numImgs:Number = my_xml.firstChild.childNodes[0].attributes.num;
    var thumbprefix = my_xml.firstChild.childNodes[0].attributes.thumbprefix;
    var largeprefix = my_xml.firstChild.childNodes[0].attributes.largeprefix;
    var ext = "."+my_xml.firstChild.childNodes[0].attributes.ext;
    var imgSets:Number = Math.ceil(numImgs/10);//max possible number of image sets
    var desc:Array = my_xml.firstChild.childNodes[0].attributes.descriptions.split("|")

    _parent.mySets = imgSets;
        if(imgSets == 1){
        _parent.btnNxt._visible = false;
        }

    _parent.imgNum = "1/"+numImgs;
    _parent.imgHolder.imgAttach.loadMovie("gallery/"+largeprefix+"01"+ext);

    for(var i:Number=0;i<numImgs;i++){

        attachMovie("thumbframe", "thumb"+i, this.getNextHighestDepth(), {_x:(i * 20), _y:51});
        var clip = eval("thumb"+i);

        if(i == 0){clip._x = 39;}
        else{clip._x = 90 * (i)+39;}

        clip._y = 51;


        _parent.txtsimon = imgTitles[0];
        _parent.imgDescr = desc[0];

        eval("thumb"+i).id = i+1;

        if(imgTitles[i] == "" or imgTitles[i] == undefined){
            clip.title = "Untitled Image";
        }
        else{
            clip.title = imgTitles[i];
        }


        eval("thumb"+i).thumbhold.loadMovie("gallery/"+thumbprefix+"0"+eval("thumb"+i).id+ext);

        eval("thumb"+(i)).onRelease = function(){   

            _parent.imgNum = this.id+"/"+numImgs;
            var thumbid:Number = this.id;
            var imgOut:Tween = new Tween(_parent.imgHolder, "_alpha", Regular.easeOut, _parent.imgHolder._alpha, 0, 0.4, true)

            imgOut.onMotionFinished = function(){
                _root.container.imgHolder.imgAttach.unloadMovie();
                _root.container.imgHolder.imgAttach.loadMovie("gallery/"+largeprefix+"0"+thumbid+ext);
                trace("gallery/"+largeprefix+"0"+thumbid+ext);
                new Tween(_root.container.imgHolder, "_alpha", Regular.easeIn, 0, 100, 0.5, true);
            }
            mytitle = this.title;
            _parent.txtsimon = mytitle;
            _parent.imgDescr = this.descr;

            _parent.btnDownloadImg.onRelease = function(){
                getURL("gallery/"+largeprefix+"0"+thumbid+ext);
                }

            new Tween(activeThumb, "_x", Strong.easeOut, activeThumb._x, this._x, 1.5, true);
            }

        clip.onRollOver = function(){
            new Tween(this, "_alpha", Strong.easeOut, this._alpha, 75, 1, true);
            }

        clip.onRollOut = function(){
            new Tween(this, "_alpha", Strong.easeOut, this._alpha, 100, 1, true);
            }
        }

        _parent.btnSlideShow.onRelease = function(){
        new Tween(this._parent.slideOverlay, "_alpha", Strong.easeOut, 0, 100, 3, true);        
        }
}

        _parent.btn_requestHighRes.onRelease = function(){
            var rtitle:String = _parent.txtsimon.toString();
            getURL("mailto:HIDDEN_EMAIL?subject=Toolkit High Res Request - "+rtitle);
            }

Я провел трассировку на источнике большого изображения, и оно вызывает правильное изображение. Я выгружаю текущее изображение и загружаю новое изображение, но ВСЕ ЕЩЕ загружает старое, как будто оно кэшировано или что-то в этом роде ?? Проблема, кажется, рядом с этим кодом:

_root.container.imgHolder.imgAttach.unloadMovie();
_root.container.imgHolder.imgAttach.loadMovie("gallery/"+largeprefix+"0"+thumbid+ext);
trace("gallery/"+largeprefix+"0"+thumbid+ext);

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

Я высоко ценю все комментарии, так как я сидел на этом целую вечность!

Simon

1 Ответ

0 голосов
/ 17 февраля 2011

Загрузка AVM1 внутри AVM2 (SWF с Actionscript 1.0 / 2.0 в SWF Actionscript 3.0) имеет некоторые ограничения , но я не думаю, что вы имеете дело с одним из их ...

В любом случае, оформить заказ по этой ссылке .

Надежды, которые помогут.

...