加载库中的文件 |
| 作者:佚名 来源:闪吧 作者: ding8285 更新:2007-1-13 20:47:19 错误报告 我要投稿 |
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的原程序:
点击浏览该文件
|
|
| 文章录入:skyuu 责任编辑:skyuu |
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |