这个效果应该也很常见,之前看到个帖子中有人问起,所以就自己弄了下,发现还是算容易的. 所有代码如下:
var pic_width = 300; var pic_height = 140; //图片的宽度和高度 var box_width = 30; //图片标头的高度,我这里就是每个图片顶部的那个透明的绿色条 var pic_x = 50; var pic_y = 30; var temp; setPic(); run(); setMask(); function setMask() { this.createEmptyMovieClip("pic_mask", 100); //创建个mc来显示范围 drawBox(pic_mask, 300, box_width*4+pic_height); pic_mask._x = pic_x; pic_mask._y = pic_y; pic_mc.setMask(pic_mask); //对显示区域进行遮照 }
function drawBox(obj, w, h) { //这个是画矩形的方法 with (obj) { beginFill(0x00ff00, 20); lineTo(w, 0); lineTo(w, h); lineTo(0, h); endFill(); } } function setPic() { this.createEmptyMovieClip("pic_mc", 0); //创建个mc来装所有的图片 for (var i = 1; i<=5; i++) { this.pic_mc.attachMovie("pic"+i, "pic"+i, i); //从库中调入图片 this.pic_mc["pic"+i].createEmptyMovieClip("box", 0); drawBox(this.pic_mc["pic"+i].box, pic_width, box_width); //为每个图片画出绿色条 this.pic_mc["pic"+i]._x = pic_x; this.pic_mc["pic"+i]._y = pic_y+30*(i-1); //排列位置 this.pic_mc["pic"+i].y = this.pic_mc["pic"+i]._y; //记录最开始的y位置 this.pic_mc["pic"+i].onRollOver = function() { temp = this; //这个变量用来存储当时鼠标指的是哪个图片 }; } } function run() { this.onEnterFrame = function() { for (var i = 1; i<=5; i++) { this.pic_mc["pic"+i]._y += (i<=temp._name.substr(3)) ? (this.pic_mc["pic"+i].y-this.pic_mc["pic"+i]._y)/3 : (this.pic_mc["pic"+i].y+pic_height-box_width-this.pic_mc["pic"+i]._y)/3; // 判断是所指图片之上的所有图片或者之下的所有图片,在用缓冲公式来使之运动 } }; } //别看写了这么多,其实主要的就是最后的那个run方法,其他很多都是用as画形状摆位置,这些其实都可以直接用矩形工具画的,应该不是很难。 点击浏览该文件
点击浏览该文件
|