5D艺术网首页
商城
|
资讯
|
作品
|
博客
|
教程
|
论坛
登录
注册
加为好友
发短消息
来自:
性别:秘密
最后登录:2007-04-12
http://mmommo.5d.cn/
首页
|
新闻
|
话题
|
博客
|
相册
|
艺术作品
|
社交关系
|
留言板
|
社交圈
2004/12/21 | _level16394
类别(Actionscript)
|
评论
(1)
|
阅读(90)
|
发表于 02:23
使用MovieClipLoader类,如果在加载swf过程中,调用unloadMovie(),会触发MovieClipLoader的onLoadError事件。onLoadError方法会有一个target参数返回,这个参数的值在这个时候是:_level16394,typeof 得到是"movieclip",奇怪的是,这个movieClip根本不是原来指定的target,他是一个没有任何方法和属性的一个怪MovieClip:
_parent=undefined;
_x=undefined;
_y=undefined;
.
.
.
如果要测试 getDepth() 取得他的图层的话,会让你的flash死机!!!
如果有兴趣的话,请测试以下代码:
var loader = new MovieClipLoader();
_root.createEmptyMovieClip("pic1", 10);
loader.loadClip("照张稍大的图片", _root.pic1);
var o = {};
o.onLoadError = function(target, errorCode) {
trace(target instanceof MovieClip);
for (var i in target) {
trace(i);
}
trace(target);
//trace(target.getDepth()) <--这个语句会让你的flash死掉
};
o.onLoadProgress = function(target) {
target.unloadMovie();
//target.removeMovieClip();//会有同样的效果。
};
o.onLoadComplete = function() {
trace("okok");
};
loader.addListener(o);
actionscript很多东西都让人觉得设计的莫名其妙。MovieClipLoader 类提供了一些mc.loadMovie()所没有的功能,但是unloadMovie()会调用onLoadError本身就值得考虑,更何况是返回一个根本就不知道是什么MovieClip。
unloadMovie()方法本身和removeMovieClip()还是有区别的,removeMovieClip()会从场景里面去掉,而unloadMovie()方法不会删除movieClip,只会移除movieClip里面的内容。
要我说,好的设计应该是:
在onLoadError(target,errorCode)这个事件中,如果中途unloadMovie()发生,应该返回的target还是指定的movieClip,因为这个movieClip还在场景,如果是removeMovieClip()发生的话,应该返回undefined,因为他已经被移除。而应该在errorCode中返回"LoadTerminated"(现在这两种情况返回的是"LoadNeverCompleted",和连接过程中网络断掉是一样的)。
不过返回一个怪东西起码还能判断这个error是怎样产生的。
0
评论
Comments
日志分类
首页
[10]
Actionscript
[8]
Remoting
[1]
RIA 动态&随想
[0]
HTML/JS/CSS
[1]