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()
  • 相关阅读:
    Yarn安装与配置
    如何找到所有 HTML select 标签的选中项
    Jquery 获取某个样式除第一个以外的元素
    常用的字符串截取方法
    App的埋点测试
    手写 promise
    关于JSON.parse(JSON.stringify(obj))实现深拷贝应该注意的坑
    计算一个数组的深度
    数组的 交集 差集 补集 并集
    webpack -- element-ui 的按需引入
  • 原文地址:https://www.cnblogs.com/sitt/p/2100510.html
Copyright © 2011-2022 走看看