【问题标题】:try catch issues actionscript3 IOErrorEvent尝试捕获问题 actionscript3 IOErrorEvent
【发布时间】:2025-12-31 15:45:06
【问题描述】:

这是用 as3 编写的图像共享应用程序。在我的 ftp 中有一个文件“/Images”,图像就在其中。名称为 1.jpg 2.jpg 3.jpg 直到 21.jpg 。(文件夹内有 21 张图片)。如您所见,有 2 个变量 totalImages 和 imageNumber。我输入了 totalImages = 100。 当我单击下一个按钮时,它会进入下一页(下一张图片。开始 1.jpg)。但是当它出现图像 21(最后一张图像)时,如果我单击下一步按钮,我无法通过图像 22。(没有 22.jpg)。我在 Flash 上的输出中出现此错误。错误 #2044:未处理的 IOErrorEvent:。文本=错误 #2036:加载从未完成。我想使用 try catch 方法并查看 swf 内部的错误。但我不知道我在代码中的何处放置了 try 和 catch。提前谢谢你

import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;
import fl.transitions.Tween;
import fl.transitions.easing.*;



//*****************CREATING VARIABLES*****************************//

//the array has all picture labels
//var myGlow:GlowFilter = new GlowFilter(0xffffff,1,10,10,255);// saving the glow
//var myShadow:DropShadowFilter = new DropShadowFilter(6);// saving the shadow to be applied later
var totalImages=100;
var imageNumber=1;
var myLoader:Loader = new Loader();


//************LOADING IMAGES TO STAGE********************//
//elearningau.com/nondynamic/
var myRequest:URLRequest = new URLRequest("http://www.elearningau.com/nondynamic/Images/"+imageNumber+".JPG");

myLoader.load(myRequest);
addChildAt(myLoader,1);// will be added under the buttons layer but over the texture


//************CENTERING THE PICS****************//

myLoader.contentLoaderInfo.addEventListener(Event.INIT, getImageInfo);
function getImageInfo(event:Event){
    myLoader.width = 485;
    myLoader.height = 360;
    var imgX=(stage.stageWidth- myLoader.width)/(-1)*(1/25);
    var imgY=(stage.stageHeight- myLoader.height)/2;
    myLoader.x=imgX;
    myLoader.y = imgY;// lines 37,38,39 & 40 are centering the loader formulae
    //myLoader.filters = [myGlow, myShadow];// adding a white color glow / grey shadow
    //var myTween:Tween = new Tween(myLoader, "alpha", None.easeNone, 0,1,2,true);//apply fade in

    }
//**************GOING TO NEXT IMAGE********************************//

rightButton.addEventListener(MouseEvent.CLICK, nextImage);

function nextImage(event:MouseEvent){

    if(imageNumber<totalImages)
    {
        imageNumber++;
    }
    else (imageNumber=1);
    reload();


}
//**************GOING TO PREVIOUS IMAGE********************************//

leftButton.addEventListener(MouseEvent.CLICK, previousImage);
function previousImage(event:MouseEvent){
    if(imageNumber>1)
    {
        imageNumber--;
    }
    else (imageNumber=totalImages);
    reload();
    }

//*****************RELOADING****************************//
//elearningau.com/nondynamic/
function reload(){
    removeChild(myLoader);
    myRequest= new URLRequest("http://www.elearningau.com/nondynamic/Images/"+imageNumber+".JPG");
    myLoader.load(myRequest);
    addChildAt(myLoader,1);// will be added under the buttons layer but over the texture
    }

【问题讨论】:

    标签: actionscript-3 url try-catch flash


    【解决方案1】:

    您缺少加载程序中的错误处理程序:

    loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
    
    function onError(e:IOErrorEvent):void {}
    

    try/catch 不适用于异步事件,加载是异步的。

    【讨论】:

    • 谢谢。那您能给我一些建议吗?我该怎么办?如果我按 nextbtn(21.jpg 到 22.jpg 但没有 22.jpg)它将返回 1.jpg
    • 您的 totalImages 等于 100。您应该将其更改为 21。所有逻辑似乎都已到位。
    • :) 智能解决方案。但是,如果不知道有多少图像怎么办。因为这个,我问了 try-catch。如果出现错误 #2044,则交换图像 1.jpg
    最近更新 更多