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()
  • 相关阅读:
    SpringCloud------获取配置文件属性值
    SpringCloud------MyBatisPlus代码生成器的使用
    Hanoi问题 算法
    常见的时间复杂度按数量级排列
    Java 匿名类
    java内部类
    Java 接口和抽象类
    使用引用类型变量来访问所引用对象的属性和方法时,Java 虚拟机绑定规则
    Python import搜索的路径顺序
    php 多次导入文件导致 Cannot redeclare class
  • 原文地址:https://www.cnblogs.com/sitt/p/2100510.html
Copyright © 2011-2022 走看看