网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Java
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.下载版块安装---jigui2.0中文说明.
.“谁持彩练当空舞”--看Java、C#.
.优化 Java 垃圾收集器改进系统性.
.编程修养.
.浅谈Java中利用JCOM实现仿Excel编.
.垃圾清理势在必行——Java垃圾收.
.Web框架对比: Wicket .
.Jakarta Struts简介(二).
.java版本的二分法算法实现.
.多种Java框架并存并非坏事.
.巧妙使用if(true)以及if(false)语.
.Debian环境下安装Java环境.
.SSL配置和解密错误问题.
.function 语句.
.如何使用Lucene对html文件进行索.
.jdbc连接各种数据库方式列表.
.看java编程思想笔记(5-6).
.我来说说Bean的使用方法.
.学习自定义SMTPAppender中的源码.
.J2EE应用开发中与Oracle数据库的.

X3D实战基础讲座之十一

发表日期:2008-1-5



  我们知道,对于Visual C++而言,交互的实现是通过消息映射来进行的。同样,X3D的交互实现也是通过类似的映射机制。用户事件的产生是通过相应的传感器产生的,而ROUTE语句就是相当于事件的映射,它映射到另一个输入事件中。

  X3D中,用户事件的传感器有:KeySensor(键盘传感器) 、StringSensor(字符串传感器)、 ToUChSensor(触摸传感器)、PlaneSensor(平移传感器) 、SphereSensor(绕点旋转感器)和CylinderSensor(Y轴旋转传感器)等。由于BS浏览插件对X3D新增的KeySensor和StringSensor节点的支持不够好,故这里暂不讨论。

  一、 TouchSensor(触摸传感器)节点

  TouchSensor(触摸传感器)节点产生基于定点输入设备(通常是鼠标)的事件。这些事件表明用户是否正在点选某个几何体和用户在什么地方,以及在什么时候按了定点设备的键。它的主要域或事件有:

  description -- 这个节点功能的文字提示。

  enabled -- 设置传感器节点是否有效。默认值为True。

  isActive -- 当点击或移动鼠标(指点设备时)发送事件。按下鼠标主键时isActive=True, 放开时
isActive=False。

  isOver -- 当指点设备移动过传感器表面时发送事件。

  hitPoint_changed -- 事件输出在子节点局部坐标系统点击点的定位。

  hitNormal_changed -- 事件输出了点击点的表面的法线向量。

  hitTexCoord_changed -- 事件输出了点击点的表面的纹理坐标。

  touchTime -- 当传感器被指点设备点击时产生时间事件。

  需要说明的是:

  (1) 若定点设备未指向传感器的兄弟几何体,而用户开始将定点设备移到传感器的兄弟几何体时,传感器将产生一个isOver事件,并将其值设置为True;相反,若定点设备已经指向传感器的兄弟几何体,此时用户将定点设备移出传感器的兄弟几何体,传感器将产生一个isOver事件,并将其值设置为False。

  (2) 当用户将定点设备从几何体的一点移动到另一点时,传感器将发送一系列事件: hitPoint_changed、hitNormal_changed、hitTexCoord_changed,分别表明用户所指的位置、该点的法向量和纹理坐标。

  (3) 当用户点击被TouchSensor监视的对象时,传感器将产生值为True的isActive事件;而当用户释放定点设备的键时,传感器将产生isActive为False的事件。

  (4) 若用户在指向几何体时按下鼠标键,然后在仍然指向这个几何体(或又回到这个几何体)时释放鼠标键,传感器将要发送一个touchTime事件,表明键被释放的时间。可以使用这一事件来模拟许多常用的用户接口(如只有在用户点击和释放定点设备按键时才产生的动作)。

  下面举两个例子来说明:

  示例1:当鼠标处在立方体的时候,就会有一个小球跟随鼠标移动。

  示例代码如下:


(图片较大,请拉动滚动条观看)

  示例的结果如下图所示:

X3D实战基础讲座之十一(图二)

  说明:需要将触摸传感器节点和要触摸的形体节点放在同一个父节点处。

  示例2:当单击中间小球时,将打开点光源,照亮四周的两个球。

  示例代码如下:

X3D实战基础讲座之十一(图三)

  示例的结果如下图所示:

X3D实战基础讲座之十一(图四)

进入讨论组讨论。

  二、 PlaneSensor(平移传感器)节点

  PlaneSensor 传感器节点用于指点设备在平行于Z=0平面上的动作,只要用户点按、拖动该传感器的兄弟几何体,此节点均将拖动(如用户使用鼠标进行的拖动)解释为在传感器的局部xy平面上的变换。其主要域或事件如下:

  description -- 这个节点功能的文字提示。

  enabled -- 设置传感器节点是否有效。默认值为True。

  minPosition -- 在xy平面内限制当前点向上和向右的translation事件。

  maXPosition -- 在xy平面内限制当前点向下和向左的translation事件。

  offset -- 该域指出相关几何体被移动后相对于初始点的位置。

  autoOffset -- 指示是否在拖动结束时将当前位置保存在offset中来实现在两次拖动之间跟踪当前位置(True表示跟踪)。若autoOffset值为False,则用户每次开始新一轮拖动时,被拖动的几何体都自动先复位到初始位置。

  isActive -- 指示定点设备当前按钮是否按下。此事件仅当按钮被按下或释放时才发出,拖动期间则不生成。

  isOver -- 当指点设备移动过传感器表面时发送事件。

  trackPoint_changed -- 拖动期间任何给定时刻用户的定点设备在xy平面上的实际点(忽略 minPosition和 maxPosition)。

  translation_changed -- 拖动期间任何给定时刻用户的定点设备在xy平面上的锁定点(受限于minPosition和 maxPosition)。


上一篇:品味Eclipse 3.1 中的新特性 人气:428
下一篇:在Weblogic上配置Hibernate为JNDI 人气:832
浏览全部Java的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐