2014-05-19 36 views
0

这是用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 :. text =错误#2036:加载从未完成。我想使用try catch方法并查看swf中的错误。但我不知道我在哪里尝试并捕获代码。谢谢你在前进尝试捕捉问题actionscript3 IOErrorEvent

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 
    } 

回答

2

你缺少从装载机的错误处理:

loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError); 

function onError(e:IOErrorEvent):void {} 

的try/catch不与异步事件的工作,和负载是异步的。

+0

谢谢。那么你能给我和建议吗?我该怎么办?如果我按下nextbtn(21.jpg to 22.jpg但没有22.jpg),它会返回1.jpg – believeitornot

+0

你的'totalImages'等于100.你应该改变它为21.所有的逻辑似乎已经到位。 – Fygo

+0

:)智能解决方案。但是如果不知道有多少图像在那里。因为这个,我问了try-catch。如果采取错误#2044然后交换图像1.jpg – believeitornot