zz999 发表于 2010-5-10 21:05:46

请教在别人的源码上修改的按钮动画效果

本帖最后由 zz999 于 2010-5-29 01:42 编辑

原帖:
http://www.autoitx.com/forum.php?mod=viewthread&tid=14793

我想要的效果是当按下    显示图像按钮后
按钮一直就伸长着直到点击其他按钮了    在缩回当前按钮伸长下一个按钮

这个例子是鼠标移开就缩回了
不知道可否实现

afan 发表于 2010-5-10 21:34:06

≈※爖※≈ 大虾的作品效果很不错,同时也感觉代码应该还可精简些,LZ可以试试精简之后再考虑修改成需要的效果。

zz999 发表于 2010-5-10 21:46:19

谢谢a大的及时回复,时在是水平有限,不知a大能否帮忙改改。

afan 发表于 2010-5-10 21:56:29

抱歉,这段时间比较忙,很难抽出时间呀~

zz999 发表于 2010-5-11 09:14:31

杯具了   来人帮帮忙喔

zz999 发表于 2010-5-20 22:00:19

来人帮帮忙喔

zz999 发表于 2010-5-23 19:25:02

来人帮帮忙喔

C.L 发表于 2010-5-23 22:30:46

本帖最后由 C.L 于 2010-5-23 22:31 编辑

挺有意思的GUI
看了下代码,按楼主的要求改了一下,源代码有点长,我只贴了更改的部份代码:

1、增加一个函数_ControlReset ()
Func _ControlReset ()
        GUICtrlSetPos($Button1,8,24,40,35)
        GUICtrlSetPos($Button2,8,70,40,35)
        GUICtrlSetPos($Button3,8,115,40,35)
        GUICtrlSetPos($Button4,8,161,40,35)
        GUICtrlSetPos($Button5,8,207,40,35)
EndFunc

2、注释掉源码主循环中所有这两行代码(每个$button都有):
_ControlChange($Form1, $Button1, 0, 30, 3, 0, 0, 1, 0)       
_ControlChange($Form1, $Button1, 1, 30, 3, 0, 0, 1, 0)

3、在每个If GUIGetMsg() = $Buttonx Then位置后插入代码,如:
If GUIGetMsg() = $Button1 Then       
        _ControlReset ()
        _ControlChange($Form1, $Button1, 0, 30, 3, 0, 0, 1, 0)       
....................
If GUIGetMsg() = $Button2 Then
        _ControlReset ()
        _ControlChange($Form1, $Button2, 0, 30, 3, 0, 0, 1, 0)       
............
If GUIGetMsg() = $Button5 Then
        _ControlReset ()
        _ControlChange($Form1, $Button5, 0, 30, 3, 0, 0, 1, 0)       
其他的地方不用修改。

zz999 发表于 2010-5-24 20:29:26

回复 8# C.L

谢谢你的帮忙
代码很好!。。。

有一个问题就是,
当点完一个按钮后,显示出来后,再点他    让他缩回怎么实现?

就是点完按钮1后,按钮1就伸长了,此时再点按钮1就又伸展一次
我想让他伸展后,再点就是收缩!

rikthhpgf2005 发表于 2010-5-24 20:32:02

学习了!!!!!!!!!!

C.L 发表于 2010-5-24 21:11:40

回复 9# zz999

这个好办,只要改一点点:
在脚本开头定义一个全局变量:$swap=true
然后将
_ControlReset ()
_ControlChange($Form1, $Button1, 0, 30, 3, 0, 0, 1, 0)
这两行改为:
If Not $swap Then
        _ControlReset ()
Else
        _ControlChange($Form1, $Button1, 0, 30, 3, 0, 0, 1, 0)
EndIf
$swap = Not $swap
每个$button 改一下$buttonX为相应的就可以了。

这样更改后,就可以实现点一下变长,再点一下变短。

seniors 发表于 2010-5-24 21:56:51

粗看一下好像要
$swap1
$swap2
$swap3
$swap4
$swap5
$swap6

woeiwoei 发表于 2010-5-25 11:05:24

都好牛哦~:face (31):

zz999 发表于 2010-5-25 11:28:15

回复 11# C.L


功能有了,又出现一个问题请教!


按钮1变长后,再按按钮1能够实现缩短。

但是按了按钮2、按钮3后,第一次按都是让按钮1缩短,需要按两次才能伸展!

C.L 发表于 2010-5-25 22:59:50

本帖最后由 C.L 于 2010-5-25 23:06 编辑

回复 14# zz999

呵呵,点出来以后要缩回去,再点下个按钮就没问题了。
不过还是帮你改下代码,这样,点那个那个就出来,其他的都缩回去,不过代码要做多点处理
如下做更改:
1、再定义一个全局变量:$bstatus = "" 初始值为空,重新定义$swap=False ,$swap 要记得更改,否则点击会没反应。
原来 $swap = true 那里更改为:Dim $swap = False,$bstatus = ""
2、将原来的代码做一下更改:
If Not $swap Then
      _ControlReset ()
Else
      _ControlChange($Form1, $Button1, 0, 30, 3, 0, 0, 1, 0)
EndIf
$swap = Not $swap
改为:
If $bstatus <> "b1" Then $swap = Not $swap
        If Not $swap Then
                _ControlReset ()
        Else
                If $bstatus <> "b1" Then _ControlReset ()
                _ControlChange($Form1, $Button1, 0, 30, 3, 0, 0, 1, 0)
                $bstatus = "b1"
        EndIf
        $swap = Not $swap
照旧,也是每个$buttonX 都要按相应的字符更改,如$button2那里改为:
If $bstatus <> "b2" Then $swap = Not $swap
        If Not $swap Then
                _ControlReset ()
        Else
                If $bstatus <> "b2" Then _ControlReset ()
                _ControlChange($Form1, $Button2, 0, 30, 3, 0, 0, 1, 0)
                $bstatus = "b2"
        EndIf
        $swap = Not $swap
这样按上面的更改一下,你就可以随便按那个,喜欢那个就点那个吧~~ 呵呵~
页: [1] 2
查看完整版本: 请教在别人的源码上修改的按钮动画效果