返回列表 回复 发帖

[修正]教材区““Flash动态缓冲图片导航制作详解”的修正。

前天我在教材区看到了““Flash动态缓冲图片导航制作详解”教程,觉得效果不错,就照着做了一下,可是无法正常运行,然后立马在论坛上求助,问题没能解决(55555555,郁闷),然后自己在百度里搜了一下,关于这个效果的源码还真不少,但都是以文本形式放在了网页上,而且内容和教材区发的完全一样,无奈之下只能自己研究了(我是菜鸟耶~~~~~太难为我了~~~5555555555555),两天过去了,终于做出了个还像那么回事的东西,只是我做的这个缓冲比起教材区的那个成品要弹的厉害,眼都花了,还希望高手能帮改一下。代码基本上没什么变化,只是少了点东西。问题就两点,第一点在代码上,如下:

//赋值,这两个初值就是教程中缺少的,所以照着教程做上去是不会动的
var myx = this["zjs"+2]._x;
var speed=0

//获取中间图片的x坐标
for (var i = 0; i<5; i++) {
        this["zjs"+i].n = i;
        //每个图片MC下定义一个变量
        this["zjs"+i].onRollOver = function() {
                control = true;
                //鼠标滑过图片时为真
        };
        this["zjs"+i].onRollOut = function() {
                control = false;
                //鼠标移出图片时为假
        };
}
onEnterFrame = function () {
        for (var k = 0; k<5; k++) {
                this["z"+k]._x = this["zjs"+k]._x;
                // 说明文字的x坐标等于本应图片的x坐标
                this["z"+k]._xscale = this["zjs"+k]._xscale;
                this["z"+k]._yscale = this["zjs"+k]._yscale;
                // 说明文字的缩放比例与图片相同
        }
        if (control) {
                mouse_in();
        } else {
                mouse_out();
        }
        // 条件真或假时调用函数
};
//坐标设置函数
function setX() {
        for (var k = -2; k<3; k++) {
                this["zjs"+(k+2)]._x = myx+this["zjs"+2]._width*k;
                //以中间图片为准无间距排列
        }
        for (var k = Number(temp1)+1; k<5; k++) {
                //temp1为缩放比例最大的图片下的变量值
                var mc1 = this["zjs"+k];
                var mc2 = this["zjs"+(k-1)];
                //此图片右边的其它图片
                mc1._x = mc2._x+(mc2._width+mc1._width)/2-1;
                //设置这些图片的x坐标,1为消除图片间的空隙
        }
        for (var k = Number(temp1)-1; k>-1; k--) {
                var mc1 = this["zjs"+k];
                var mc2 = this["zjs"+(k+1)];
                mc1._x = mc2._x-(mc2._width+mc1._width)/2+1;
        }
        //缩放比例最大的图片的左边的图片的x坐标设置
        myLine();
        //图片下方的线条
}
//比例缩放函数
function move_scale(x, obj) {
        speed = (x-obj._xscale)*.65+speed*0.6;
        obj._xscale += speed;
        obj._yscale += speed;
        //缓冲公式,x为图片的缩放比例,obj为MC
}
//鼠标滑过图片时,图片的缩放、x坐标设置函数
function mouse_in() {
        for (var i = 0; i<5; i++) {
                var mc = this["zjs"+i];
                //获得实例名
                if (mc.hitTest(_xmouse, _ymouse, true)) {
                        move_scale(180, mc);
                        //如果鼠标位于图片的上方,图片放大1.8倍
                        temp1 = mc.n;
                        //把此图片下的变量赋给变量temp1
                } else if (Math.abs(mc.n-temp1) == 1) {
                        move_scale(140, mc);
                        //两侧的图片比例放大1.4倍
                } else {
                        move_scale(100, mc);
                        //其它的图片为原始大小
                }
        }
        setX();
        //设置图片的x坐标
}
//鼠标移出图片时,图片的缩放、x坐标设置函数
function mouse_out() {
        for (var i = 0; i<5; i++) {
                move_scale(100, this["zjs"+i]);
                //缩放比例为1,恢复原始大小
        }
        setX();
        //坐标复原
}
//线条函数
function myLine() {
        createEmptyMovieClip("line", 1);
        //创建一个空影片
        with (line) {
                lineStyle(0.1, 0xff0000, 100);
                moveTo(zjs0._x-zjs0._width/2, zjs0._y+10);
                lineTo(zjs4._x+zjs4._width/2, zjs4._y+10);
                //图片下方水平的直线
                moveTo(zjs0._x-zjs0._width/2, zjs0._y+5);
                lineTo(zjs0._x-zjs0._width/2, zjs0._y+15);
                //右边垂直的直线
                moveTo(zjs4._x+zjs4._width/2, zjs4._y+5);
                lineTo(zjs4._x+zjs4._width/2, zjs4._y+15);
                //左边垂直的直线
        }
}

第二点就是在做影片剪辑zjs0---zjs4的时候,一定要让图型的底部中心对齐中心点(大多数人好像都是习惯中心点对中心点,我也是~:P)!要不然出来的效果就什么的都有了!!就这两点影响了程序的正常运行。
最后一点是送个发教程的大哥们的,请对我们这些初学的小朋友负点责任,请不要把调试不通的代码作为教程发出来,要不像我们这些菜鸟本来就一头雾水的了,再这么一折腾,我看就差不多都昏过去了~~~~~~~当然,也很有可能是我太菜,没能用大哥们的“简单”方法做出这个效果,所以还请大哥们指点指点!!谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!

[ 本帖最后由 闻得到的风 于 2006-11-16 09:46 编辑 ]

menu.fla (112 KB)

弹的厉害问题

弹的厉害的问题也找到了,在这段代码里,见红色字部分
function move_scale(x, obj) {
        speed = (x-obj._xscale)*.65+speed*0.6;//.65就是控制弹力的了,设到.35就和教程的差不多了!
        obj._xscale += speed;
        obj._yscale += speed;
        //缓冲公式,x为图片的缩放比例,obj为MC
}
哇,lucky,我加分了耶,谢谢版主~~~~~
恭喜恭喜啊!
返回列表