快速业务通道

加载库中的文件

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-11


Flash提供的linkage给我们的编程带来了极大的便利, 我们甚至可以主场景里面不放如何元素,所有的元素都放在库中,然后用action来组织调用.但是,在默认的方式下,Flash必须将linkage的所有元素都下载完毕以后,才开始执行第一帧的action,这样就造成loading的失效. 怎么解决这个难题呢? 有个办法可以很好的解决这个问题:
首先,对于库中所有的linkage,将 “在第一帧中导出”这个选项去掉
按此在新窗口浏览图片
这样可以使linkage的元素不在第一帧前输出. 下面我们以加载库中的MP3为例,看看其中的妙处在哪
1。首先我们还是向往常那样 在第一帧和第2帧 做个简短的LOADING就行 第一帧: if (_root.getBytesLoaded()>=_root.getBytesTotal()) {
gotoAndPlay(3);
} else {
a = Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)+"% COMPLETED";
}

第2帧: gotoAndPlay(1); 2.接下来我们新建一个MC 把声音从库中拖动到第一帧,并且设置停止 如图
按此在新窗口浏览图片
或者在这个MC的时间轴上的第一帧加stop() 第2帧放声音 (这下你可以不设置停止)
3。回到场景,在第3帧插入MC 在第4帧 写AS: mymusic = new Sound();
mymusic.attachSound("music");
mymusic.start(0, 1);
stop();
4 输出动画 测试LOADING 是不是很流畅的把库中的声音加载到场景中来了?
到这里为止,也许还有几个疑团在你脑子里。
疑团1 。为什么要去掉“在第一帧导入”?
疑团2。为什么做个MC来放入声音,而又不让其播放?
疑团3 。为什么这个MC要放在attachSound()的前面帧中呢?
答1:在默认的方式下,Flash必须将linkage的所有元素都下载完毕以后,才开始执行第一帧的action,这样就造成loading的失效.这样就取消了默认方式!
答2,3:我们取消了首帧导入 那怎么让flashplayer知道你这个元素在哪里呢?? 取消了首帧导入 flash就不知道这个所谓的linkage的元素在哪里了 而实际上它是在library里面,但对于flashplayer它是不知道的...flashplayer没有library这个概念。我们只需要把这个元素放到一个容器中(就是这个MC)意思是告诉flashplayer ,这样flashplayer就能找到这个元素了,我们只需要想个办法隐藏它 或者让他不出现。这就是我在MC第一帧加STOP 第2帧又拖入声音的原因了 这个容器(MC)STOP后的东西其实是我们不希望出现的,但我们是没办法才让它拖进来。因为flash要attach某样东西,首先要知道他的linkage,其次还要让这个物件在attach前被导出。

如果文件多了可以把他们都放在一帧里(特指那些要attach的) 方便管理,所以这个容器可以美其名曰:“垃圾收集器” 加载库中MP3的原程序:
点击浏览该文件
如果换个加载对象 改为JPG 呢? 方法差不多 不过是把JPG放在MC中 再在场景attachMovie 它即可 加载库中JPG的原程序:
点击浏览该文件
关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号