帮同事写了一段测试代码,如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2.  
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <title>MoveObject</title>
  6.  
  7. <script type = "text/javascript" language = "javascript">
  8. function Init() {
  9. try{
  10. var SGWorld = new CreateSGObj();
  11. SGWorld.Open("C:\\Users\\Administrator\\Desktop\\a.FLY");
  12. }
  13. catch (e)
  14. {
  15.  
  16. }
  17. }
  18.  
  19. function MoveObject()
  20. {
  21. var SGWorld = new CreateSGObj();
  22. SGWorld.AttachEvent("OnLButtonDown", OnLButtonDown);
  23. SGWorld.AttachEvent("OnRButtonDown", OnRButtonDown);
  24. }
  25.  
  26. var sobj = null;
  27. function OnLButtonDown(Flags, X, Y)
  28. {
  29. var SGWorld = CreateSGObj();
  30. var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, 1);//第三个参数设置为1,表示鼠标点选对象的时候,只选择Model类型的对象
  31. if (CursorCoord.ObjectID == null || CursorCoord.ObjectID=="")
  32. return false;
  33. var obj = SGWorld.Creator.GetObject(CursorCoord.ObjectID);
  34. var opos = obj.Position.Copy();
  35. var campos = SGWorld.Navigate.GetPosition(3);
  36. var tpos = obj.Position.Move(100, campos.Yaw+90, 0);//将当前模型对象位置向右侧平移100米
  37. tpos.Yaw = opos.Yaw;
  38. obj.Position = tpos;
  39. }
  40.  
  41. function OnRButtonDown(Flags, X, Y) {
  42. var SGWorld = CreateSGObj();
  43. var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, 1);
  44. if (CursorCoord.ObjectID == null || CursorCoord.ObjectID == "")
  45. return false;
  46. var obj = SGWorld.Creator.GetObject(CursorCoord.ObjectID);
  47. var opos = obj.Position.Copy();
  48. var campos = SGWorld.Navigate.GetPosition(3);
  49. var tpos = obj.Position.Move(100, campos.Yaw - 90, 0);//将当前模型对象位置向左侧平移100米
  50. tpos.Yaw = opos.Yaw;
  51. obj.Position = tpos;
  52. return true;
  53. }
  54.  
  55. // SGWorld701
  56. function CreateSGObj() {
  57. try {
  58. var obj = document.getElementById("SGWorld");
  59. if (obj == null) {
  60. obj = document.createElement('object');
  61. obj.setAttribute("name", "SGWorld");
  62. obj.setAttribute("id", "SGWorld");
  63. obj.style.height = "1px";
  64. obj.style.width = "1px";
  65. obj.setAttribute("classid", "CLSID:3A4F919C-65A8-11D5-85C1-0001023952C1");
  66. document.body.appendChild(obj);
  67. }
  68. return obj;
  69. }
  70. catch (e) {
  71. alert(e);
  72. }
  73. }
  74. </script>
  75. </head>
  76. <body onload="Init();" >
  77. <table style="margin: 0px; border: 0px;">
  78. <tr>
  79. <td colspan="4">
  80. <input id="Button1" type="button" value="button" onclick="MoveObject()" />
  81. </td>
  82. </tr>
  83. </table>
  84. <object id="TerraExplorerInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" style="width: 19%; height: 560px;"></object>
  85. <object id="TerraExplorer3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" style="width: 80%; height: 560px;"></object>
  86. </body>
  87. </html>

SkylineGlobe7.0.1版本 通过鼠标左右平移模型对象的更多相关文章

  1. SkylineGlobe7.0.1版本 支持SQLite(*.sqlite;*.db)数据库

    SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了 ...

  2. SkylineGlobe7.0.1版本 主页面如何和Popup里面的嵌入页面相互传值

    不想多说废话,直接看代码吧!(支持IE和Chrome) 主页面: function ShowPanel() { var sg = CreateSGObj(); var pp = sg.Creator. ...

  3. [0] 解决版本冲突-使用SVN主干与分支功能

    解决版本冲突-使用SVN主干与分支功能 1  前言 大多数产品开发存在这样一个生命周期:编码.测试.发布,然后不断重复.通常是这样的开发步骤: 1)    开发人员开发完毕某一版本(如版本A)功能后, ...

  4. Nacos 发布 v0.8.0 Pre-GA版本,安全稳定上生产?

    服务注册和服务配置开源项目 Nacos 本周发布了 v0.8.0 Pre-GA 版本,作为开源项目生命周期中的里程碑版本之一,v0.8.0 Pre-GA版本支持登录.命名空间.Metrics监控(对接 ...

  5. 记录一次MongoDB3.0.6版本wiredtiger与MMAPv1引擎的写入耗时对比

    一.MongoDB3.0.x的版本特性(相对于MongoDB2.6及以下): 增加了wiredtiger引擎: 开源的存储引擎: 支持多核CPU.充分利用内存/芯片级别缓存(注:10月14日刚刚发布的 ...

  6. MongoDBV3.0.7版本(shard+replica)集群的搭建及验证

    集群的模块介绍: 从MongoDB官方给的集群架构了解,整个集群主要有4个模块:Config Server.mongs. shard.replica set: Config Server:用来存放集群 ...

  7. 【大数据】Linux下Storm(0.9版本以上)的环境配置和小Demo

    一.引言: 在storm发布到0.9.x以后,配置storm将会变得简单很多,也就是只需要配置zookeeper和storm即可,而不再需要配置zeromq和jzmq,由于网上面的storm配置绝大部 ...

  8. 【原】webapp开发中兼容Android4.0以下版本的css hack

    话说现在的手机型号越来越多,主要还是android和ios这2个巨头称霸了江湖,而他们自带的浏览器内核是webkit,那对于做移动网页开发的同事来说,一般只要做好webkit内核浏览器的展现效果就行了 ...

  9. HBase1.0以上版本的API改变

    HBase1.0以上版本已经废弃了 HTableInterface,HTable,HBaseAdmin等API的使用,新增了一些API来实现之前的功能: Connectioninterface: Co ...

随机推荐

  1. ZooKeeper的三种典型应用场景

    引言 ZooKeeper是中典型的pub/sub模式的分布式数据管理与协调框架,开发人员可以使用它进行分布式数据的发布与订阅.另外,其丰富的数据节点类型可以交叉使用,配合Watcher事件通知机制,可 ...

  2. 在windows中创建.gitignore文件

    1.先任意创建一个文件,例如:1.txt 2.打开cmd命令行窗口,到1.txt目录下 windows7/8输入ren 1.txt .gitignore修改成功 windows10输入mv 1.txt ...

  3. [React] 从零开始的react

    组件 1. 无状态组件 在React中,组件的名字必须用大写字母开头,而包含该组件定义的文件名也应该是大写字母(便于区分,也可以不是). 无状态组件是纯展示组件,仅仅只是用于数据的展示,只根据传入的p ...

  4. bootstrap之弹出框

    1.模态框的核心在于 首先声明一个 模态框,标记其位置 <div class="modal fade" id="myModal" tabindex=&qu ...

  5. C# 在PPT幻灯片中创建图表

    图表能够很直观的表现数据在某个时间段的变化趋势,或者呈现数据的整体和局部之间的相互关系,相较于大篇幅的文本数据,图表更增加了我们分析数据时选择的多样性,是我们挖掘数据背后潜在价值的一种更为有效地方式. ...

  6. Java开发笔记(六十)匿名内部类的优势

    前面依次介绍了简单接口和扩展接口,给出的范例都是自定义的接口代码,其实Java系统本身就自带了若干行为接口,为了更好地理解系统接口的详细用法,接下来还是从一个基础的例子出发,抽丝剥茧地逐步说明接口的几 ...

  7. Java高阶语法---Volatile

    背景:听说Volatile Java高阶语法亦是挺进BAT的必经之路. Volatile: volatile同步机制又涉及Java内存模型中的可见性.原子性和有序性,恶补基础一波. 可见性: 可见性简 ...

  8. 深度 | AI芯片终极之战

    深度 | AI芯片终极之战 https://mp.weixin.qq.com/s?__biz=MzA4MTQ4NjQzMw==&mid=2652712307&idx=1&sn= ...

  9. 工作流引擎JFlow与activiti 对比分析(一)5种基本控制流模式的对比

    为了更好的说明activiti 与jflow的两款工作流引擎的特点与区别,我们按照如下几个方面做一次全面的.客观的对比. 首先activiti是国外的一款开源的工作流程引擎,在国际上影响比较深远与广泛 ...

  10. Git:修改Git Bash默认打开位置(win10)

    1.起因 大家写的代码不可能直接保存在根目录下,但是Git Bash每次一打开就是根目录,每次都要切换路径很麻烦. 2.修改Git Bash默认打开位置 1)Git Bash右键 -> 属性 2 ...