论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

连续滚动的图片效果

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:08:13


思路是,把超出视觉范围的图片追加到最后一张图片的未尾或是在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高度
                }
        };
其实各位可以在这个基础上再加以扩展.这才是学习的好方法.现在我也再扩展一下这段代码的应用性些.首先上面的那段代码只能用于图片一样高的才行.如果图片的高度不一样的话.那图片的的滚动就会出现问题了.而我下面的那些代码呢也有一定的局限性,要把图片大的跟大的一起排列在一起.小的跟小的排在一起.(明?)
var sheight:Number;//前面一类图片的大小,其实这里就是记录前十个小图片的总长度
var flag:Boolean;
var jianxi:Number;
var speed:Number;
var picNum:Number;
var totalHeight: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;
                        
                }
        };
}
----------------------------------------------------------------------
第二阶段的代码就是这样了.明天会加上加载大图片.再加上loading.如果哪位都可以在此扩展的啊.应用性强一点.就像楼上说的.用XML来记录图片的外部信息.都是可以的.希望大家多想想.然后写出来.把思路写上来.分享一下.*_*
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058