WEB开发网
开发学院图形图像Flash Flash 连续滚动的图片效果 阅读

Flash 连续滚动的图片效果

 2007-01-04 10:56:47 来源:WEB开发网   
核心提示:思路是,把超出视觉范围的图片追加到最后一张图片的未尾或是在Stage的某个位置.只要能跟最后一张图片的位置后面就可以了.for(i=1;i<7;i++){this.createEmptyMovieClip("mc"+i,i);//创建一个空白影片(其实是是有I个,这样每个MC的运动才不会影响到

思路是,把超出视觉范围的图片追加到最后一张图片的未尾或是在Stage的某个位置.只要能跟最后一张图片的位置后面就可以了.

for(i=1;i<7;i++){
    this.createEmptyMovieClip("mc"+i,i);//创建一个空白影片(其实是是有I个,这样每个MC的运动才不会影响到其它MC的运动.)
    this["mc"+i]._x=10;
    this["mc"+i]._y=(i-1)*100+20;//设置其X,Y的位置
    this["mc"+i].attachMovie("m"+i,"mc"+i,7*i);//加载内部MC
    this["mc"+i].onEnterFrame=function(){//加个enterframe事件        
                  this._y=this._y-2;//让每个加载有MC的影片都运动起来
        if(this._y<-128){//判断影片的位置是否到达了指定的位置,如果到达了,就执行以下的语句.
            this._y=Stage.height+80;//设置过了界限的MC的Y位置为stage高度
        }
    };
}

其实各位可以在这个基础上再加以扩展.这才是学习的好方法.现在我也再扩展一下这段代码的应用性些.首先上面的那段代码只能用于图片一样高的才行.如果图片的高度不一样的话.那图片的的滚动就会出现问题了.而我下面的那些代码呢也有一定的局限性,要把图片大的跟大的一起排列在一起.小的跟小的排在一起.(明?)

varsheight:Number;//前面一类图片的大小,其实这里就是记录前十个小图片的总长度
varflag:Boolean;
varjianxi:Number;
varspeed:Number;
varpicNum:Number;
vartotalHeight:Number;
//图片的总长度;可在总长度总要保持不变
flag=false;
//这个变量是用于标识是不是己经把全部图片加载完
jianxi=20;
//每张图片的间隔的高度
speed=10;
//图片滚动速度
picNum=20;
//图片总数
for(i=1;i<21;i++){
    this.createEmptyMovieClip("mc"+i,i);
    this["mc"+i].attachMovie("pic"+i,"picmc"+i,i);
    this["mc"+i]._x=0;
    this["mc"+i].num=i;
    if(i<11){//前十张图片与后十张的图片的高度不一样的.
        this["mc"+i]._y=(i-1)*(this["mc"+i]["picmc"+i]._height+jianxi);
                      //设置图片的Y位置
        sheight=(i-1)*(this["mc"+i]["picmc"+i]._height+jianxi);
                     //其实这里就是记录着第十张图片的Y位置
    }else{
        this["mc"+i]._y=sheight+(i-11)*(this["mc"+i]["picmc"+i]._height+jianxi);
                     //设置图片的Y位置
    }
    if(i==picNum){
                     //当加载最后一张图片时
        flag=true;
                     //把这个标识符设置为TRUE,就意味着,超过视觉范围的图片可以接在后面了
        totalHeight=this["mc"+i]._y+this["mc"+i]["picmc"+i]._height;
                     //这是全部图片和间隙的长度总和.每张超过视觉范围的图片都会被加在这个后面.      
    }
       //每个被加载进来的pic中都有图片,图片上面放着一个透明按钮
    this["mc"+i]["picmc"+i].btn.useHandCursor=false;
    this["mc"+i]["picmc"+i].btn.onRollOver=function(){
        speed=0;
                     //当鼠标经过时,让速度为0
    };
    this["mc"+i]["picmc"+i].btn.onRollOut=function(){
        speed=10;//当鼠标经过时,让速度为10
    };
    this["mc"+i]["picmc"+i].btn.onRelease=function(){
                     //这是当鼠标点击图片上的按钮时触发的事件
                     //loadBigPic,是我在主场景中定义的一个加载大图片的一个函数.这里就不贴出来了.
        this._parent._parent._parent._parent.loadBigPic(this._parent._parent.num);
    };
    this["mc"+i].onEnterFrame=function(){
        this._y=this._y-speed;//让图片滚动起来
        if(this._y<(-this["picmc"+this.num]._height)){
                      //当图片的运动到场景外了.就让这张图片接在全部图片长度的最后面.    
                        //(不知道大家能不能明白我的这句话.我也表达不清楚了.)    
                             this._y=totalHeight-this._height+jianxi;
            
        }
    };
}

Tags:Flash 连续 滚动

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接