找回密码
 加入
搜索
查看: 4947|回复: 17

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

 火.. [复制链接]
发表于 2010-5-10 21:05:46 | 显示全部楼层 |阅读模式
本帖最后由 zz999 于 2010-5-29 01:42 编辑

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

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

这个例子是鼠标移开就缩回了
不知道可否实现
发表于 2010-5-10 21:34:06 | 显示全部楼层
≈※爖※≈ 大虾的作品效果很不错,同时也感觉代码应该还可精简些,LZ可以试试精简之后再考虑修改成需要的效果。
 楼主| 发表于 2010-5-10 21:46:19 | 显示全部楼层
谢谢a大的及时回复,时在是水平有限,不知a大能否帮忙改改。
发表于 2010-5-10 21:56:29 | 显示全部楼层
抱歉,这段时间比较忙,很难抽出时间呀~
 楼主| 发表于 2010-5-11 09:14:31 | 显示全部楼层
杯具了     来人帮帮忙喔
 楼主| 发表于 2010-5-20 22:00:19 | 显示全部楼层
来人帮帮忙喔
 楼主| 发表于 2010-5-23 19:25:02 | 显示全部楼层
来人帮帮忙喔
发表于 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)        
其他的地方不用修改。
 楼主| 发表于 2010-5-24 20:29:26 | 显示全部楼层
回复 8# C.L

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

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

就是点完按钮1后,按钮1就伸长了,此时再点按钮1就又伸展一次
我想让他伸展后,再点就是收缩!
发表于 2010-5-24 20:32:02 | 显示全部楼层
学习了!!!!!!!!!!
发表于 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为相应的就可以了。

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

评分

参与人数 1金钱 +22 贡献 +5 收起 理由
lynfr8 + 22 + 5

查看全部评分

发表于 2010-5-24 21:56:51 | 显示全部楼层
粗看一下好像要
$swap1
$swap2
$swap3
$swap4
$swap5
$swap6
发表于 2010-5-25 11:05:24 | 显示全部楼层
都好牛哦~
 楼主| 发表于 2010-5-25 11:28:15 | 显示全部楼层
回复 11# C.L


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


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

但是按了按钮2、按钮3后,第一次按都是让按钮1缩短,需要按两次才能伸展!
发表于 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
这样按上面的更改一下,你就可以随便按那个,喜欢那个就点那个吧~~ 呵呵~
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-16 02:51 , Processed in 0.083953 second(s), 27 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表