1 (изменено: Qweasd123, 2013-12-14 17:55:39)

Тема: AHK: Игра с кнопкой

Может вы видели такие игры, к примеру "поймай монету". Когда наводишь на эту монету мышкой и монета как бы убегает. В итоге её не поймать. Собственно мне нужно сделать такое с кнопкой.

Чтобы при наведении мышью на кнопку она меняла свои координаты по кругу, не давая нажать на неё. А если на клавиатуре нажать любую клавишу, то кнопка прекращает свои перемещения и становится доступной.

2

Re: AHK: Игра с кнопкой

Используйте команду ControlMove для сторонних приложений или GUIControl, Move для AutoHotkey GUI.

3

Re: AHK: Игра с кнопкой

Думаю, что самый простенький пример, с "гонением" в одну сторону:


Global r := 222
        , step := 12
        , angle := 225
        , hButton
        , IsEnable
 
CoordMode, Mouse, Client
OnMessage(0x200, "WM_MOUSEMOVE")  
OnMessage(0x100, "KEYDOWN"), OnMessage(0x104, "KEYDOWN")
OnMessage(0x101, "KEYDOWN"), OnMessage(0x105, "KEYDOWN")
 
Gui, -DPIScale
Gui, Font, s22
Gui, Add, Button, vButton gButton hwndhButton w44 h44, % Chr(0x2639)
MoveCircle(angle) 
Gui, Show, w488 h488  
Return

KEYDOWN(w,l,m,h)   {  
    Static IsDown
    
    If ((m = 0x100 || m = 0x104) && !IsDown ) 
        IsDown := 1  
    Else If (m = 0x101 || m = 0x105)
    {
        IsDown := 0 
        GuiControl, , Button, % (IsEnable := !IsEnable) ? Chr(0x263a) : Chr(0x2639) 
        ToolTip
    }  
} 

WM_MOUSEMOVE(w,l,m,h)   {  
    If (!IsEnable && h = hButton) 
        UnderMouse() 
} 

UnderMouse()   {
    MouseGetPos, , , , hwnd, 2
    If (hwnd = hButton)
        MoveCircle(angle += step) 
}

MoveCircle(_angle) {    
    angle := _angle > 360 ? Mod(_angle, 360) : _angle
    a := 0.0174532888888889 * angle
    GuiControl, Move, Button, % "x" Round(r+r*cos(a)) 
                                . " y" Round(r+r*sin(a))  
    UnderMouse() 
}

Button:
    If IsEnable
        ToolTip Button click 
    Return

Написано для собственного понимания получения координат на окружности, исходя из радиуса и градуса.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui