0

Flash (actionscript 2.0) でゲームを作成しました。このゲームでは、マウスを画面の中央に固定する必要があります (ファースト パーソン シューティング ゲームのように)。Flash 11.2 を使用する AS3 では可能ですが、AS2 では不可能です。AutoHotKey を使用すると、次のコードを使用してこれを行うことができます。

while (0=0){
    MouseMove, 410, 302, 90 
    sleep 100
}

Esc::ExitApp

これは問題なく動作しますが、ユーザーに AutoHotKey を要求したくありません。そのスクリプトをスタンドアロン アプリケーション (.exe) に変換する方法、またはこのプログラムを別の言語で作成する方法はありますか? (FlashゲームはWebから起動しません)

4

2 に答える 2

1

そのスクリプトをスタンドアロン アプリケーション (.exe) に変換する方法はありますか?

AHK を正常にインストールした場合は、.ahk ファイルを右クリックして [スクリプトのコンパイル] を選択できるはずです。

そのオプションがない場合は、代わりに、スクリプトの .exe 出力を生成する「ahk2exe」コンパイラをスタート メニューで探すことができます。

于 2013-02-17T04:44:40.580 に答える
0

他の画面サイズでは動作が異なる可能性がある固定位置を使用する代わりにWinGetPos、XY 座標を動的に使用および設定できます。Atlユーザーが+で切り替えたときにマウスが「フリーズ」するのを防ぐために、Tabでチェックして、ゲームの実行中にのみマウスをロックすることができますIfWinActive。100 ミリ秒待機するループの代わりに、スクリプトを呼び出す 100 ミリ秒のタイマーを選択しましたが、ループまたは while を使用しても同様に機能します。

SetTitleMatchMode, 2
SetTimer, CheckWin, 100

CheckWin:
{
    IfWinActive, YourAppNameHere ; ONLY runs when Your App is Active
    {
        WinGetPos, XStart, YStart, Width, Height, YourAppNameHere ; Use AHK Window Spy
        XPos:=XStart+(Width/2)
        YPos:=YStart+(Height/2)
        MouseMove, %XPos%, %YPos%, 90 
        Return
    }
}

^F1:: ; Ctrl+F1 to stop the timer based loop
SetTimer, CheckWin, Off
Return

別の解決策は次のとおりです。

#SingleInstance Force
#installKeybdHook
#Persistent

Xbutton2:: ; Toggle fix mouse in Center
Confine := !Confine
ClipCursor( Confine, A_ScreenWidth/2, A_ScreenHeight/2, A_ScreenWidth/2, A_ScreenHeight/2 )
Return 

ClipCursor( Confine=True, x1=0 , y1=0, x2=1, y2=1 )
{ 
    VarSetCapacity(R,16,0),  NumPut(x1,&R+0),NumPut(y1,&R+4),NumPut(x2,&R+8),NumPut(y2,&R+12) 
    Return Confine ? DllCall( "ClipCursor", UInt,&R ) : DllCall( "ClipCursor" ) 
}
于 2013-02-17T08:22:19.527 に答える