<pathid="curve"fill="none"stroke="black"stroke-width="2"/></svg>这里给出的是HTML文档。<HEAD><EMBEDsrc="01.svg"width=400height=300></P><SCRIPT>
科技资讯SCIENCE&TECHNOLOGYINFORMATION
69
科技资讯
2006NO.7SCIENCE&TECHNOLOGYINFORMATION
IT技术
</svg>JAVA程序中要允许SVG二维场景变化,因而需添加下面的内容:svgCanvas.setDocumentState(JSVGCanvas.
functioninit(evt){varmyTarget=evt.getTarget();if(myTarget.getNodeType()!=9)svgDoc=myTarget.getOwnerDocument();elsesvgDoc=myTarget;}functioncreate(){varobj=svgDoc.getElementById('curve');vardata="M";for(t=0;t<120;t++){afa=t*Math.PI/180;x=250+50*(Math.cos(afa)+(afa)*Math.sin(afa));y=200-50*(Math.sin(afa)-(afa)*Math.cos(afa));data+=x+","+y+"";}data+="";obj.setAttribute("d",data);}</SCRIPT></HEAD>生成的渐开线如下:3.基于JAVA语言的SVG交互应用除了JavaScript,JAVA也可应用于SVG交互应用之中,具体应用时人们通常借助于Apache组织[8]提供的Batik工具包[9]。Batik是基于JAVA语言的、专门用于SVG图形动画及交互应用的API,可用来在JAVA环境中显示SVG文档内容,也可用于动态处理及动态生成SVG文档。Batik可以将SVG图形以JPEG、PNG等图像格式输出,因而可以在网络服务程序中,通过Batik后台处理,在网页上将动态变化的SVG内容,并以JPEG、PNG图像格式显示出来,使没有安装SVG插件的任何
计算机都可以看到SVG所展示的内容。3.1Batik工具包的应用方法JAVA应用编程环境目前大多是基于JDK+Eclipse架构,即在安装JDK[10]之后,安装JAVA集成编译环境Eclipse[11]。基于Batik的SVG编程时,只需给出Batik库文件所在的地址即可使用。3.2基于Batik的SVG交互应用方法Batik的JSVGCanvas类可用来将外部SVG文档输入到JAVA的Swing图形窗口中,SVG文档中任何需要动态变化或产生互动响应的内容应预先设置ID名称(例如id="left_circle"),并且通过特定的ActionListener监听其是否收到鼠标或键盘的控制。当SVG文档被JAVA程序调入后,SVG文档的DOM与JAVA的运行就有了密切联系,鼠标或键盘的操作将被特定的ActionListener方法处理并显示相应的结果。3.3Batik具体应用介绍首先准备一个生成一个实心红色圆的SVG文档,圆附带有标记("touched"):<svgwidth="50"height="40"viewBox="005040"><circleid="touched"cx="25"cy="20"r="10"style="fill:crimson"/>
ALWAYS_DYNAMIC);具体的监听方法listener在监听到标记id="touched"的红色圆被鼠标点击后,通过简单处理,即可显示点击的具体坐标,当然,也可以方便地做其它处理,例如动态添加新的形体。由于程序较长,这里只显示运行结果。4.结语本文介绍了基于DOM的、利用JavaScript及JAVA语言编程的SVG交互应用,介绍了实现SVG互动应用的主要途径及实现的具体步骤。在此基础上,结合SVG动画编程,可以为SVG的广泛应用提供方法上的指导。接下来我们将进一步进行SVG交互应用的探索研究,除了深入探索基于鼠标及键盘的传统交互应用研究之外,还将探索基于语音识别的SVG应用。参考文献[1]W3C[Z].http://www.w3.org/[2]W3C,ScalableVectorGraphics(SVG)[Z].http://www.w3.org/TR/SVG[3]W3C,DocumentObjectModel(DOM)[Z].http