悲剧的是,只能在32位版本下使用,需要Max2008或更高版本,如果需要在其他版本下,其实也并非不可,只是会比较麻烦,此外,这种东西找个引擎来做更简单一些
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
DotNet.loadAssembly "Microsoft.VisualBasic.dll"
DotNet.loadAssembly "Microsoft.DirectX.DirectInput.dll"
Global KeyboardDevice
SystemGuid = DotNetClass "Microsoft.DirectX.DirectInput.SystemGuid"
KeyboardDevice = DotNetObject "Microsoft.DirectX.DirectInput.Device" SystemGuid.Keyboard
CooperativeLevelFlags = DotNetClass "Microsoft.DirectX.DirectInput.CooperativeLevelFlags"
theCooperativeLevelFlags = DotNet.CompareEnums CooperativeLevelFlags.Background CooperativeLevelFlags.NonExclusive 2
MaxHWND = DotNetObject "System.IntPtr" (Windows.getMAXHWND() as integer)
KeyboardDevice.SetCooperativeLevel MaxHWND theCooperativeLevelFlags
KeyboardDevice.Acquire()
Fn TimerUpDate theSender TheEvent =
(
Global Boxer,KeyboardDevice
if not IsValidNode Boxer do Boxer = Box()
moveStep = 1
DxKey = DotNetClass "Microsoft.DirectX.DirectInput.Key"
KeyboardState = KeyboardDevice.GetCurrentKeyboardState()
if (KeyboardState.item DXKey.D) == true do Boxer.Pos.X += moveStep
if (KeyboardState.item DXKey.A) == true do Boxer.Pos.X -= moveStep
if (KeyboardState.item DXKey.W) == true do Boxer.Pos.Y += moveStep
if (KeyboardState.item DXKey.S) == true do Boxer.Pos.Y -= moveStep
)
DotNetTimer = DotNetObject"System.Timers.Timer" 30
DotNet.AddEventHandler DotNetTimer "Elapsed" TimerUpDate
DotNetTimer.Start()
DotNet.loadAssembly "Microsoft.DirectX.DirectInput.dll"
Global KeyboardDevice
SystemGuid = DotNetClass "Microsoft.DirectX.DirectInput.SystemGuid"
KeyboardDevice = DotNetObject "Microsoft.DirectX.DirectInput.Device" SystemGuid.Keyboard
CooperativeLevelFlags = DotNetClass "Microsoft.DirectX.DirectInput.CooperativeLevelFlags"
theCooperativeLevelFlags = DotNet.CompareEnums CooperativeLevelFlags.Background CooperativeLevelFlags.NonExclusive 2
MaxHWND = DotNetObject "System.IntPtr" (Windows.getMAXHWND() as integer)
KeyboardDevice.SetCooperativeLevel MaxHWND theCooperativeLevelFlags
KeyboardDevice.Acquire()
Fn TimerUpDate theSender TheEvent =
(
Global Boxer,KeyboardDevice
if not IsValidNode Boxer do Boxer = Box()
moveStep = 1
DxKey = DotNetClass "Microsoft.DirectX.DirectInput.Key"
KeyboardState = KeyboardDevice.GetCurrentKeyboardState()
if (KeyboardState.item DXKey.D) == true do Boxer.Pos.X += moveStep
if (KeyboardState.item DXKey.A) == true do Boxer.Pos.X -= moveStep
if (KeyboardState.item DXKey.W) == true do Boxer.Pos.Y += moveStep
if (KeyboardState.item DXKey.S) == true do Boxer.Pos.Y -= moveStep
)
DotNetTimer = DotNetObject"System.Timers.Timer" 30
DotNet.AddEventHandler DotNetTimer "Elapsed" TimerUpDate
DotNetTimer.Start()