【问题标题】:AS2 SWF works standalone, but when included into AS3 SWF (even when ONLY it is loaded) it acts strangely, any ideas?AS2 SWF 独立工作,但是当包含在 AS3 SWF 中时(即使只加载它)它的行为很奇怪,有什么想法吗?
【发布时间】:2011-06-28 21:47:05
【问题描述】:

我知道有一些关于将 AS2 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);

上面的跟踪显示正在调用正确的图像,但它根本不会加载!

我非常感谢所有 cmets,因为我已经坐了这么久!

西蒙

【问题讨论】:

  • 你能做的最好的事情就是把它翻译成AS3。当 AS2 加载到 AS3 时,我看到了各种错误,例如:未调用精灵上的鼠标处理程序、鼠标滚轮不起作用、某些部分移动/丢失。当 AS2 加载到 AS3 时,舞台宽度被视为 0。

标签: flash actionscript-3 actionscript adobe gallery


【解决方案1】:

在 AVM2 中加载 AVM1(带有 Actionscript 1.0/2.0 的 SWF 到 SWF Actionscript 3.0)has some restrictions,但我不认为您正在处理其中一个...

不管怎样,结帐this link

希望能有所帮助。

【讨论】:

  • 感谢您的回复,但是在我的情况下,该线程似乎有点无关紧要,因为画廊的运行率为 99.9%,我只是在将 PNG 图像加载/卸载到我的框架支架时遇到问题。经过多次试验和错误,我似乎已经破解了它,使用了一堆讨厌的代码。这就像10吨代码被一个线程持有,这就是我对它的谨慎态度!但它有效,而且效果很好。将在下面发布...
猜你喜欢
  • 2010-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多