zoukankan      html  css  js  c++  java
  • MaxScript键盘控制盒子的移动

    悲剧的是,只能在32位版本下使用,需要Max2008或更高版本,如果需要在其他版本下,其实也并非不可,只是会比较麻烦,此外,这种东西找个引擎来做更简单一些

    View Code
    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()
  • 相关阅读:
    Appium环境搭建+cordova
    Appium简单测试用例
    appium常用方法整理
    JAVA+Maven+TestNG搭建接口测试框架及实例
    stm32填坑之旅一
    再度分(tu)析(cao)Egret这个年轻人
    Egret的若干局限
    egret随笔-egret浅入浅出
    一步一步实现AS3拖放组件
    react-native学习笔记——ViewStack组件
  • 原文地址:https://www.cnblogs.com/sitt/p/2100510.html
Copyright © 2011-2022 走看看