请教在别人的源码上修改的按钮动画效果
本帖最后由 zz999 于 2010-5-29 01:42 编辑原帖:
http://www.autoitx.com/forum.php?mod=viewthread&tid=14793
我想要的效果是当按下 显示图像按钮后
按钮一直就伸长着直到点击其他按钮了 在缩回当前按钮伸长下一个按钮
这个例子是鼠标移开就缩回了
不知道可否实现 ≈※爖※≈ 大虾的作品效果很不错,同时也感觉代码应该还可精简些,LZ可以试试精简之后再考虑修改成需要的效果。 谢谢a大的及时回复,时在是水平有限,不知a大能否帮忙改改。 抱歉,这段时间比较忙,很难抽出时间呀~ 杯具了 来人帮帮忙喔 来人帮帮忙喔 来人帮帮忙喔 本帖最后由 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)
其他的地方不用修改。 回复 8# C.L
谢谢你的帮忙
代码很好!。。。
有一个问题就是,
当点完一个按钮后,显示出来后,再点他 让他缩回怎么实现?
就是点完按钮1后,按钮1就伸长了,此时再点按钮1就又伸展一次
我想让他伸展后,再点就是收缩! 学习了!!!!!!!!!! 回复 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为相应的就可以了。
这样更改后,就可以实现点一下变长,再点一下变短。 粗看一下好像要
$swap1
$swap2
$swap3
$swap4
$swap5
$swap6 都好牛哦~:face (31): 回复 11# C.L
功能有了,又出现一个问题请教!
按钮1变长后,再按按钮1能够实现缩短。
但是按了按钮2、按钮3后,第一次按都是让按钮1缩短,需要按两次才能伸展! 本帖最后由 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