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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>MoveObject</title> <script type = "text/javascript" language = "javascript">
function Init() {
try{
var SGWorld = new CreateSGObj();
SGWorld.Open("C:\\Users\\Administrator\\Desktop\\a.FLY");
}
catch (e)
{ }
} function MoveObject()
{
var SGWorld = new CreateSGObj();
SGWorld.AttachEvent("OnLButtonDown", OnLButtonDown);
SGWorld.AttachEvent("OnRButtonDown", OnRButtonDown);
} var sobj = null;
function OnLButtonDown(Flags, X, Y)
{
var SGWorld = CreateSGObj();
var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, 1);//第三个参数设置为1,表示鼠标点选对象的时候,只选择Model类型的对象
if (CursorCoord.ObjectID == null || CursorCoord.ObjectID=="")
return false;
var obj = SGWorld.Creator.GetObject(CursorCoord.ObjectID);
var opos = obj.Position.Copy();
var campos = SGWorld.Navigate.GetPosition(3);
var tpos = obj.Position.Move(100, campos.Yaw+90, 0);//将当前模型对象位置向右侧平移100米
tpos.Yaw = opos.Yaw;
obj.Position = tpos;
} function OnRButtonDown(Flags, X, Y) {
var SGWorld = CreateSGObj();
var CursorCoord = SGWorld.Window.pixelToWorld(X, Y, 1);
if (CursorCoord.ObjectID == null || CursorCoord.ObjectID == "")
return false;
var obj = SGWorld.Creator.GetObject(CursorCoord.ObjectID);
var opos = obj.Position.Copy();
var campos = SGWorld.Navigate.GetPosition(3);
var tpos = obj.Position.Move(100, campos.Yaw - 90, 0);//将当前模型对象位置向左侧平移100米
tpos.Yaw = opos.Yaw;
obj.Position = tpos;
return true;
} // SGWorld701
function CreateSGObj() {
try {
var obj = document.getElementById("SGWorld");
if (obj == null) {
obj = document.createElement('object');
obj.setAttribute("name", "SGWorld");
obj.setAttribute("id", "SGWorld");
obj.style.height = "1px";
obj.style.width = "1px";
obj.setAttribute("classid", "CLSID:3A4F919C-65A8-11D5-85C1-0001023952C1");
document.body.appendChild(obj);
}
return obj;
}
catch (e) {
alert(e);
}
}
</script>
</head>
<body onload="Init();" >
<table style="margin: 0px; border: 0px;">
<tr>
<td colspan="4">
<input id="Button1" type="button" value="button" onclick="MoveObject()" />
</td>
</tr>
</table>
<object id="TerraExplorerInformationWindow" classid="CLSID:3a4f9193-65a8-11d5-85c1-0001023952c1" style="width: 19%; height: 560px;"></object>
<object id="TerraExplorer3DWindow" classid="CLSID:3a4f9192-65a8-11d5-85c1-0001023952c1" style="width: 80%; height: 560px;"></object>
</body>
</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. Aooms_微服务基础开发平台实战_001_开篇

    一.引子 “ 微服务”近年来很火的一个词,如今的热度不亚于当年的SSH组合,各种开发框架.中间件.容器.概念层出不穷. 比如:dubbo.motan.zookeeper.springboot.spri ...

  2. .Net基础——程序集与CIL

    1. 程序集和CIL: 程序集是由.NET语言的编译器接受源代码文件产生的输出文件,通常分为 exe和dll两类,其中exe包含Main入口方法可以双击执行,dll则需要被其他程序集调用执行. CIL ...

  3. [Go] golang缓冲通道实现管理一组goroutine工作

    通道1.当一个资源需要在goroutine之间共享时,通道在goroutine之间架起了一个管道2.无缓冲通道和有缓冲通道,make的第二个参数就是缓冲区大小3.无缓冲通道需要发送和接收都准备好,否则 ...

  4. Java开发笔记(四十九)关键字super的用法

    前面介绍了如何从Bird类继承而来Swallow类,按道理子类应当继承父类的所有要素,但是对于构造方法来说,Swallow类仅仅继承了Bird类的默认构造方法,并未自动继承带参数的构造方法.如果子类想 ...

  5. Java高阶语法---final

    背景:听说final Java高阶语法是挺进BAT必经之路. final: final关键字顾名思义就是最终不可改变的. 1.含义:final可以声明成员变量.方法.类和本地变量:一旦将引用声明为fi ...

  6. 【转】mysql数据库优化大全

    数据库优化 sql语句优化 索引优化 加缓存 读写分离 分区 分布式数据库(垂直切分) 水平切分 MyISAM和InnoDB的区别: 1. InnoDB支持事务,MyISAM不支持,对于InnoDB每 ...

  7. NET Core应用中使用缓存

    NET Core应用中使用缓存 .NET Core针对缓存提供了很好的支持 ,我们不仅可以选择将数据缓存在应用进程自身的内存中,还可以采用分布式的形式将缓存数据存储在一个“中心数据库”中.对于分布式缓 ...

  8. Vs2017 xaramin mac build agent部署后记

                    换了四种黑苹果,最终成功了                 步骤: 1.升级vs2017, 2.安装XCODE 8.3 3.安装vs2017 for mac 企业版 4 ...

  9. JPasswordField密码框,JList列表框

    [JPasswordField密码框] //导入Java类 import javax.swing.*; import java.awt.*; import java.awt.event.ActionE ...

  10. 下拉框 JComboBox,文本框JTextField

    1. 下拉框 JComboBox //导入Java类 import javax.swing.*; import java.awt.*; import java.awt.event.ActionEven ...