首页 > 其他分享 >TE二次开发键盘控制键修改

TE二次开发键盘控制键修改

时间:2022-09-27 23:39:25浏览次数:48  
标签:摄像机 控制键 newpos pos 键盘 箭头键 二次开发 TE

       用键盘可以实现在TE中进行前进、后退等一些操作,这些键是在TE中默认定义好的,在二次开发中,可以实现对这些键进行更换。

       默认的键盘操作键列表(帮助文档): 

       A:增加速度直到达到最大的前进速度

       <SHIFT>A:双倍加速

       Z:降低速度,直到达到最大反向速度

       <SHIFT>Z:双倍降速

       <SPACE>:停止飞行(速度设置为零) 

       S:向上移动

       <SHIFT>S:快速上升

       X:向下移动

      <SHIFT> X:快速下降 

  键盘的上下箭头控制摄像机倾斜

  向上箭头键:摄像机或飞行角度向上

  向下箭头键:摄像机或飞行角度向下 

  键盘左、右箭头键控制飞机的方向

  左箭头键:飞行摄像机方向向左

  右箭头键:飞行摄像机方向向右 

      Q:向左滑动/缩小

     <SHIFT> Q:快速向左滑动/缩小

     W:向右滑动/放大

     <SHIFT> W:快速向右滑动/放大


  要想实现按自己定义的键进行TE控制,在二次开发中,TE的三维窗口默认有一个事件是:OnKeyboardMessage,在程序中,实现此事件,以CS代码为例,在winform窗口上点击事件的后边,后端代码即可实现事件。

TE二次开发键盘控制键修改_3d


 private void axTE3DWindow1_OnKeyboardMessage(object sender, AxTerraExplorerX._ITE3DWindowEvents_OnKeyboardMessageEvent e)

        {

            e.message = 258;

           //这句很关键,设置true,即不实现默认键盘的按键

            e.pbHandled = true;     


          //根据e.keyCode的数值实现自定义移动

          switch (e.keyCode)

            {

          //键盘A的操作,实现向左移动

                case 65:            

                    IPosition6 pos =                              sgworld.Navigate.GetPosition(AltitudeTypeCode.ATC_TERRAIN_RELATIVE); 

                    double x = pos.Altitude * 0.2;

                    IPosition6 newpos = pos.Move(x, 270 + pos.Yaw, 0);/ 

                    newpos.Pitch = pos.Pitch;

                    newpos.Yaw = pos.Yaw;

                    sgworld.Navigate.SetPosition(newpos); 

                    break;

           //其他的键盘操作...............

            }

       此方式就可以实现自定义键盘按键的操作,唯一的要求,就是那些上下左右的移动,得用自己的方法来写。

           








标签:摄像机,控制键,newpos,pos,键盘,箭头键,二次开发,TE
From: https://blog.51cto.com/speciallist/5717761

相关文章

  • TE中的一种矢量图层加载方式
        在TE中加载的矢量图层,数据量过大的情况下,流方式数据显示的速度会比较慢,使用层方式加载,系统的资源占的比较多。    这里介绍一种矢量图层的加载方式,这种......
  • TE的标签外框图片如何制作
        在TE中的TextLabel标签中,有一个属性是FrameFile图片的选择,选择完成后,标签上就会带上一层外框,TE的程序路径里有几张这样的图片示例,那要做一个自定义的外框如何做......
  • TE二次开发批量加载发布3dml模型
        在TE的二次开发过程中,把3dml模型用sfs或者sgs发布完成后,如何获取到sfs或者sgs上发布的模型列表,使用一定的规则对模型进行加载,灵活的控制模型图层。   下边......
  • 关于TE的缓存清理
        TE二次开发的程序,在网络版应用的情况下,不管是CS和BS程序,在服务器端发布数据,有时发现在服务器端数据更新了的情况下,客户端的数据并没有变过来,不管是地形数据,还是......
  • TE对象message js脚本简单写法
        TE里的对象和图层都支持添加message,其中message类型中有一类为Script,在弹出的框里可以写JavaScript脚本,下图就是切换到脚本信息下: 写一个了简单的脚本示例:<scrip......
  • TE地图上画饼状图
      如何在TE上画一个饼状图,需要调用TE开发的几个API接口,和一些简单的数学算法,效果图如下:   具体的实现思路为:    一个圆的角度为360度,首先计算饼状图中的对象......
  • TE对NPAPI的支持
    NPAPI,就是指网景插件应用程序接口(NetscapePluginApplicationProgrammingInterface),是一种外部程序作为插件和浏览器共同完成网页展示的调用通道。插件就相当于运行在网页......
  • TE二次开发加载wmts
    TE中可以通过网络服务加载地图,常用的服务有wms,wmts等,WMTS提供了一种采用预定义图块方法发布数字地图服务的标准化解决方案。WMTS弥补了WMS不能提供分块地图的不足。WMS针对......
  • TE二次开发中的画圆
    在TE的二次开发中,有时会用到画圆标示一个范围,圆的半径根据鼠标移动而变化,跟直接使用TE画一个圆的效果相同。这需要定义TE二次开发中的鼠标点击等事件,以下是详细的画法代码。......
  • English words chapter 20220927
    ......