发新话题
打印

[讨论] 载入MC后 MC的alpha属性由0%到100%

载入MC后 MC的alpha属性由0%到100%

这个效果不知道该怎么实现?

在书上看到用了arguments这个用法 但是查看帮助后 还是没能深入了解到这个用法的具体作用

不知道有其他代码能实现这个效果不?

TOP

a.onPress=function()
{
        _root.createEmptyMovieClip("load",1);
        load.loadMovie("1.jpg");
        load._alpha=0;
        this.onEnterFrame=function()
        {
               
                var b=5;
                if(load._alpha==0)
                {
                        load._alpha+=b;
                        if(load._alpha>=100)
                        {
                                delete this.onEnterFrame;
                        }
                }
        }
}

——————————————————————————————
我写的代码有问题

TOP

你代码本身也有问题,但关键还是是载入延迟问题
不要用loadMovie载入图片,改用movieClipLoader
把load.loadMovie("1.jpg");改成movieClipLoader控制
a.onPress=function()
{_root.createEmptyMovieClip("load",1);
load._alpha=0   
var ML:MovieClipLoader=new MovieClipLoader()
var myobj:Object=new Object()
ML.addListener(myobj);
myobj.onLoadInit=function(){
load.onEnterFrame=function()
        {
    if(load._alpha<100){
          var b=5;
          load._alpha+=b;
    //trace(load._alpha)
         }else{
     delete this.onEnterFrame
    }
        }//end onEnterFrame
}//end onLoadInit
ML.loadClip("1.jpg",load)
}

[ 本帖最后由 sunxinzhe 于 2008-6-23 19:03 编辑 ]

TOP

没有效果。

TOP

你代码本身有问题,当然看不到效果了,我刚测试了下,就是这一句
if(load._alpha==0)
                {
                        load._alpha+=b;
                        if(load._alpha>=100)
                        {
                                delete this.onEnterFrame;
                        }
                }

TOP

已经给你改正了,再测试下

TOP

已经解决 感谢指点 我再去研究一下代码

TOP

但是还有一点 laodMovie()是不是不能完成这种效果?

TOP

a.onPress=function()
{
        _root.createEmptyMovieClip("load",1);
        load.loadMovie("1.jpg");
        load._alpha=0;
        this.onEnterFrame=function()
        {
               
                var b=5;
                if(load._alpha<100)
                {
                        load._alpha+=b;
                        if(load._alpha>=100)
                        {
                                delete this.onEnterFrame;
                        }
                }
        }
}

————————————————————
if(load._alpha<100)  我改动了这句 效果已经出来了

TOP

你的原因是出在_alpha的值上 用trace(_alpha)跟踪你就会明白FLASH计算_alpha值并不是用的整数而是带有浮点,所以 绝对判断_alpha==0将会失败(由于有浮点_alpha的值不会正好=0) 而用 相对判断_alpha<=0 则成功
三不答:1.大范围问题不回答.2.甩手问题不回答.3.破解问题不回答
回答准则: 给予清晰的思路引导,远胜于只发代码了事.

TOP

在本地测试是可以,那是因为你的图片在本地,本地图片加载基本上不要时间,但你放到网站上时,由于加载图片需要一段时间,在代码执行到onenterframe时如果还没加再完,就会出现我说的延迟情况,loadmovie无法监视加载进度,所以建议你还是忘了loadmovie

TOP

学习老

TOP

路过看下,受用

TOP

引用:
原帖由 iswaraj 于 2008-6-23 19:23 发表
你的原因是出在_alpha的值上 用trace(_alpha)跟踪你就会明白FLASH计算_alpha值并不是用的整数而是带有浮点,所以 绝对判断_alpha==0将会失败(由于有浮点_alpha的值不会正好=0) 而用 相对判断_alpha<0则成功
今天才看到我楼上有人回了这个问题,但这是有错误的,看你说的代码:
this.onEnterFrame=function()
        {
               
                var b=5;
                if(load._alpha<0)
                {
                        load._alpha+=b;
                        if(load._alpha>=100)
                        {
                                delete this.onEnterFrame;
                        }
                }
        }
光小于0是不够的,因为他只要加一次b=5,_alpha的指就会大于0,不满足load._alpha<0的条件了,当然代码也只能执行一次,不能连续执行,必须改成<=100,虽然最后结果正如你所说的浮点,并不一定刚好精确到100

TOP

看过,确实有想法

TOP

发新话题