石家庄创联互动

SEO

搜索引擎优化

Flash制作中常见的加载外部文件时候碰到的问题
发布日期:[08-03-28 17:40:29]
阿里妈妈,帮你实现网络赚钱梦,流量变成现金!

xml文件,它能把xml文件中的全部内容做为字符串输出。

System.useCodepage = true;
var my_lv = new LoadVars();
my_lv.onData = function(src) {
    if (src == undefined) {
        trace("loading...");
    } else {
        a_txt.text = src;
    }
};
my_lv.load("a.xml");

3。再说加载图片和flash影片

这部分可以用的函数有loadMovie,loadMovieNum,然后就是MovieCipLoader类。加载到影片剪辑的 SWF 文件或图像会继承该影片剪辑的位置、旋转和缩放属性,所以可以用影片剪辑的目标路径来定位加载的 SWF 文件。在这里我们把加载的MC叫做loader_mc,把被加载的MC叫做loaded_mc,当然loadMovieNum()用到的loader_mc就是_level了哦。

同前面的loadVariables和loadVariablesNum一样,loadMovie和loadMovieNum具备加载外部图象和影片的能力,而没有任何事件处理,flash无法得知外部图象和影片是否已经被加载完成,因此需要依靠onEnterFrame,setInterval等不断循环来检查,才可以确定外部图象和影片是否加载完成。
这里说一下用前两个函数时怎么判断加载完成,先说loadMovie();

this.createEmptyMovieClip("loader_mc", this.getNextHighestDepth());
loader_mc.loadMovie("1001.jpg");
this.onEnterFrame = function() {
    if (loader_mc.getBytesLoaded() == loader_mc.getBytesTotal()) {
        loader_mc._width = 200;
        loader_mc._height = 200;
        delete this.onEnterFrame;
    }
};

呵呵。上面的代码貌似能做到调整长和宽的效果,测试就会发现场景中一片空白,在if语句里面trace(loader_mc._width )输出为0,怎么会这样?我在研究的过程中也困惑了半天呢,在这里面多谢网友神仔的提示,呵呵,下面说解决过程。

在onEnterFrame刚开始执行的瞬间,loader_mc.getBytesLoaded()和loader_mc.getBytesTotal()的输出都为0,0==0当然为true,所以上面的delete this.onEnterFrame在开始就执行了。也就是说上面的代码相当于

this.createEmptyMovieClip("loader_mc", this.getNextHighestDepth());
loader_mc.loadMovie("1001.jpg");
loader_mc._width = 200;
loader_mc._height = 200;

具体原因见最后说明,这里面有几种解决方法:

1。用loader_mc.getBytesLoaded() / loader_mc.getBytesTotal()==1来判断。由数学上的"0/任何不为0的数==0",flash中trace(0/0)输出为false,这样也就间接判断了loader_mc.getBytesTotal()是不是为0,避免了0==0的问题。

2。我们也可以直接增加一个loader_mc.getBytesLoaded()大于0的判断条件。使用if (loader_mc.getBytesLoaded() == loader_mc.getBytesTotal()&&(loader_mc.getBytesLoaded()>0)来作用判断条件。

再说loadMovieNum(),这个函数是把图片或者是swf文件加载到_level上,也就是场景中,所以这个过程的loader_mc就是_level了。呵呵。解释一下_level,加载到 Flash Player 中的每个 SWF 文件都被分配一个级别。同一级别中只能存在一个swf,加载两个swf到一个级别,后者会覆盖前者。

/*
loadMovieNum("1001.jpg", 1);
_level1._width = 200;
_level1._height = 300;
//这样是不行的。
*/
loadMovieNum("1001.jpg", 1);
this.onEnterFrame = function() {
    if (_level1.get

9 7 3 1 2 3 4 8 :

众多站长实践证明SEO网赚的最简单方法是==> 透过 Google AdSense 使您的网站产生收益
上一篇:
下一篇:
【热点新闻】
桂林旅游 桂林 桂林山水
地址:石家庄市桥东长安区华宸怡园19号楼2单元401室
邮编:050031
电话: 0311-85663255
邮箱:gonghp83@126.com
Copyright © foosun.net All rights reserved.
领先科技股份有限公司 版权所有
ICP备案号:正在备案中
网页设计/策划:领先科技