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()
  • 相关阅读:
    Android四大基本组件介绍与生命周期
    TRIZ系列-创新原理-23-反馈原理
    hibernate之6.one2many单向
    软件评測师真题考试分析-5
    WAS集群系列(3):集群搭建:步骤1:准备文件
    Android Developer:合并清单文件
    移动均值滤波与中值滤波
    使用React的static方法实现同构以及同构的常见问题
    mysql合并同一列的值
    iOS开发
  • 原文地址:https://www.cnblogs.com/sitt/p/2100510.html
Copyright © 2011-2022 走看看