- UID
- 447539
- 在线时间
- 小时
- 积分
- 1419
- 帖子
- 离线
- 18647 天
- 注册时间
- 2008-3-12
|
按赖不住要继续谈谈“载入延迟”这个严重问题。
对延迟问题,我首先得说:凡是有外部文件载入的地方,就有载入延迟问题的存在。
先卖一下这个帖子吧!!!就看你可不可以高价买进。我敢肯定有许多人吃过这方面的亏,甚至有许多人吃了亏可能还不知道是”延迟“造成的,那我就来好好提醒下,”延迟问题“不是小问题,希望以下的你能收获一点东西,写这个东西的同时我也在收获。
得感谢刚才一位经典朋友的提问,激起了我写这篇帖子的欲望,因为几乎在同一时间,我和他会到了同样的问题,也做过同样的测试。交代清楚了,开始吧。
接我原来的帖子:flash传参问题总结http://bbs.blueidea.com/thread-2859991-1-1.html
就拿我今天所有的测试实例来讲吧。
基本原理的测试:在舞台建一空白MC,取名mymc,保存在桌面,在桌面放一张图片1.jpg
1,你写下以下代码测试:
mymc.loadMovie("1.jpg")
trace(mymc._width)
输出:0
哼!内部装了那么大一张图片,居然不改变宽度?有经验的朋友都知道,如果你要做的效果要用到mymc的宽度,是无法调用的。
2,再写下以下代码测试:
var ml=new MovieClipLoader()
ml.addListener(this)
ml.loadClip("1.jpg",mymc)
trace(mymc._width)
输出:0
同样的效果
3,好,那我用下面的代码来试试:
var ml=new MovieClipLoader()
ml.addListener(this)
ml.loadClip("1.jpg",mymc)
this.onLoadComplete=function(){
trace(mymc._width)
}
输出:0
看来onLoadComplete也是不堪重任。
4,那用onLoadInit吧,”王牌“
var ml=new MovieClipLoader()
ml.addListener(this)
ml.loadClip("1.jpg",mymc)
this.onLoadInit=function(){
trace(mymc._width)
}
输出了我们要的数据,就是他了,我们要的宽度。
5,虽然达到了效果,但我们既然是在载入,就不得不考虑attachmovie把图片转成MC(一定得转为MC,直接在库中图片上设linkage是不行的),linkage设为pic
mymc.attachMovie("pic","pic1",3)
trace(mymc._width)
输出正常,这个很容易理解,他是影片内部库中的东西, 不存在延迟问题。
阐述一下我对上面总结吧:
1,2————loadmovie和直接用loadclip载入外部文件,都无法立刻取得相关信息。
3,4————MovieClipLoader是延迟的客星,但onLoadComplete不堪重任,onLoadInit才是最佳选择。
5—————attachMovie可以避免延迟,但是不推荐使用,图片一多,你有那么大库装吗?
///////////////////////////////////////////////////////////////////////////////
应用效果:
今天在研究bitmapdata类,所以就用我今天的一个例子来说吧,我贴出我原来的代码,是什么效果,我就不说了,表达不清楚,知道这个类的一看就会明白我的意图,不知道这个类的,我觉得你更要看。
舞台两个空MC,一个为mymc,一个为source
原来的代码:import flash.display.BitmapData;
var ml=new MovieClipLoader()
ml.addListener(this)
ml.loadClip("1.jpg",source)
source._width=50
source._height=50
var bm:BitmapData = new BitmapData(500,300, false,0xaa3344);
bm.draw(mymc)
mymc.attachBitmap(bm, 3, "always", true);
毫无效果。
后来改正后的代码:import flash.display.BitmapData;
var ml=new MovieClipLoader()
ml.addListener(this)
ml.loadClip("1.jpg",source)
this.onLoadInit=function(){
source._width=50
source._height=50
var bm:BitmapData = new BitmapData(500,300, false,0xaa3344);
bm.draw(mymc)
mymc.attachBitmap(bm, 3, "always", true);
}
效果正常了
桌面.rar
(134.45 KB, 下载次数: 238)
|
|