主题:  如何对一排滚动的图片设置鼠标响应

小乌龟

职务:普通成员
等级:2
金币:10.0
发贴:497
#12002/7/4 14:04:23
我有一排紧密相连的滚动的小图片。。每一张图片都是一个按钮。。我想要的效果是:
当鼠标移到图片上时,图片停止滚动。并且是很流畅的惯性的那种停止。。。点击图片放大该图片。。鼠标移开时,图片又开始滚动
怎么做?谁知道跟个贴,谢谢!



5D荣誉斑竹

职务:普通成员
等级:2
金币:2.0
发贴:617
#22002/7/4 18:05:45
正好原来做过一个,至于逐渐停止,只要把当鼠标移动到mc之上时,两个mc的移动加一个步长(逐渐停止,瞬时测试鼠标的x位置,记录下来,然后慢慢朝着这个位置step)就可以了!


源文件



小乌龟

职务:普通成员
等级:2
金币:10.0
发贴:497
#32002/7/10 12:43:30
我看了原文件。。其中有两个参数值不是很了解。望有关人士予以解释,谢谢
 if(_root:a){
  _root.mc1._x-=1;
  _root.mc2._x-=1;
}
 if(this._x ==382)
 {
  _root.mc2._x = 1155;
 }
我对这句话意思的理解是:
上面两句是MC1和MC2的移动速度。
下面条件句是当MC1的X值为382时,MC2的X值设为1155。也就是MC2紧跟着MC1排在后面。照这样讲:1155=MC1的长度+382。
当我改变MC1和MC2移动的速度应该不影响它们本身的长度呀。。
可是当我把
_root.mc1._x-=1;
_root.mc2._x-=1;
改为:
_root.mc1._x-=4;
_root.mc2._x-=4;
时,MC1跟MC2就接不上了。。播放完MC2后,后面就是空的了。
这是怎么回事??
另外,我对1155和382两数值的理解是不是正确?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#42002/7/11 0:47:46
由于它是一像素一像素地移,所以,只要把需要改位置的图块移动到一又二分之一宽度的位置就行了。

实际上,可以根据前一个图块的位置加上一个相对值,就可以算出需要移到的位置了,这样,移动速度就可以任意调整了。

我把桃人的文件“改装”了一下。采用MX语法和书写习惯。所有Action都在第一帧,并支持动态速度(感应鼠标):



 源文件下载

编辑历史:[这消息被janlay编辑过(编辑时间2002-07-11 00:50:18)]
[这消息被janlay编辑过(编辑时间2002-09-06 14:29:06)]
[这消息被janlay编辑过(编辑时间2003-03-31 21:19:51)]


5D荣誉斑竹

职务:普通成员
等级:2
金币:2.0
发贴:617
#52002/7/12 8:43:21
janlay兄说得没错!
好的算法就是把个别的变成普遍的~~



小乌龟

职务:普通成员
等级:2
金币:10.0
发贴:497
#62002/7/31 17:17:56
再问个问题:
这一排图片可以从数据库中导入进去吗??



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#72002/7/31 20:56:47
理论上可以,我回去试试



zoom4040

职务:普通成员
等级:1
金币:0.0
发贴:110
#82002/8/1 7:42:50
斑竹好厉害:)我以前见别人做的只是鼠标覆盖后按钮移动立即停止,您做的还可以左右移动,而且是惯性停止。取得鼠标的瞬时X值后,是通过限定一段距离后用帧长来调整停止的快慢吧?



janlay

职务:管理员
等级:7
金币:28.0
发贴:7244
#92002/8/1 18:42:51
zoom4040在上个帖子中说
引用:
取得鼠标的瞬时X值后,是通过限定一段距离后用帧长来调整停止的快慢吧?


不是。整个动画只有一帧,这是用action来完成的。

根据鼠标的横坐标可以计算出它到图块中心点的距离,根据某个算法把这个距离转换成移动的速度,这个值越大,移动就越快。而当鼠标落在图块之内时,就做匀减速运动(让速度值递减速或递增),直到速度为零。



zoom4040

职务:普通成员
等级:1
金币:0.0
发贴:110
#102002/8/2 9:29:15
janlay和桃人两位大虾提供的源码下载后都无法打开,急呀!:(



zoom4040

职务:普通成员
等级:1
金币:0.0
发贴:110
#112002/8/2 15:34:16
不好意思,可能是flashMX在安装的时候出了些问题,卸了重装就可以打开了,给大家添麻烦了。:)



apiapia

职务:普通成员
等级:1
金币:0.0
发贴:109
#122002/8/12 17:43:44
上面的代码有没有FLASH5的呢?

现在大多都是FLASH5的浏览器,没有办法看到效果啊。怎么办呀。。

_root.onEnterFrame = function () {
    if (_xmouse > 0 && _xmouse < Moviewidth && _ymouse > 0 && _ymouse < ActualHeight) {
        if (speed > 0) {
            speed -= 0.3;
            if (speed < 0) {
                speed = 0;
            }
        } else if (speed < 0) {
            speed += 0.3;
            if (speed > 0) {
                speed = 0;
            }
        }
    } else {
        speed = (this._xmouse - MovieWidth / 2) / 20;
    }
    mc1._x += speed;
    mc2._x += speed;
    for (i = 1; i <= 2; i++) {
        for (j = 1; j <= 9; j++) {
        }
    }
};
上面这个AS,是直接放在FRMAE上,而如果偶把它放在MC上,

然后onClipEvent(enterFrame){
//代码。没有FUNCTION 就不行了。。}



pjxp

职务:普通成员
等级:1
金币:0.0
发贴:89
#132002/10/11 9:20:21
上面的说了这么多,我还是不东,下了原件也没有用
还是不理解呀
有两个问题
1:图片他怎么样能够这样的转动
2:他是怎么控制转动的
希望谁可以帮忙



pjxp

职务:普通成员
等级:1
金币:0.0
发贴:89
#142002/10/11 9:21:56
忘记说了
谁可以写个这样的教程呀
我需要的不得了呀



IT编辑

职务:普通成员
等级:6
金币:10.0
发贴:7769
#152002/10/13 0:29:27

编辑历史:[这消息被柳叶吹风编辑过(编辑时间2002-10-13 00:30:21)]