问题捕获类型错误AS3

时间:2011-04-25 10:45:02

标签: xml flash actionscript-3 loader

您好我正在通过XML将图像和数据加载到Flash中。由于各种原因,某些数据丢失了图像或者没有图像。当图像URL为空时,flash返回消息TypeError:错误#2007:参数url必须为非null。我一直在尝试使用IO错误事件捕获此错误,但我不确定这是否是正确的方法,因为我似乎无法让它工作。这对我来说是一个问题,因为当我将项目添加到舞台时,数据与图像不匹配,一旦我能够捕获此错误,我想要做的是将默认图像推入_trackArray,我将然后用来向舞台添加项目。

private function callTracks(): void {

        for (var i:Number = 0; i < _tracksTotal; i++){
                var _trackpicUrl = _trackImage[i];

                //trace(_trackImage[i]);

                var _trackpicLoader = new Loader();


                _trackpicLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, trackpicLoaded);
                _trackpicLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
                _trackpicLoader.load(new URLRequest(_trackpicUrl));


                _trackpicLoader.name = i+1;


                _trackArray.push(_trackpicLoader);
                _containerMc.addChildAt(_trackpicLoader, _ringCounter);


    }

}

private function loadError(e:IOErrorEvent): void {
        trace("IO Error: " + e);

}

2 个答案:

答案 0 :(得分:1)

那么,为什么不在测试_trackpicUrl时测试值是否为空?

var _trackpicUrl:String;
if(_trackImage[i] == null) {
    //do whatever you need to handle the null
    _trackImage[i] = "myDefault.url";
}
_trackpicUrl = _trackImage[i];

答案 1 :(得分:0)

您没有捕获IOError,因为它永远不会到达load()。 @shanethehat上面的方法可以很好地填补空白,但为什么不首先考虑为什么它的null呢?您是否动态生成XML?