瀏覽器方的功能擴(kuò)展技術(shù).ppt_第1頁(yè)
瀏覽器方的功能擴(kuò)展技術(shù).ppt_第2頁(yè)
瀏覽器方的功能擴(kuò)展技術(shù).ppt_第3頁(yè)
瀏覽器方的功能擴(kuò)展技術(shù).ppt_第4頁(yè)
瀏覽器方的功能擴(kuò)展技術(shù).ppt_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

瀏覽器方的功能擴(kuò)展技術(shù),“瀏覽器服務(wù)器”所形成的基本client/server工作方式有三個(gè)特點(diǎn): 簡(jiǎn)單易行: 這使得它很快被實(shí)現(xiàn)和接受 有局限 服務(wù)器方: 功能單一 瀏覽器方: 能顯示的數(shù)據(jù)類型有限 有潛力. 在實(shí)踐中擴(kuò)充, 現(xiàn)代軟件技術(shù) (對(duì)象和構(gòu)件技術(shù)) 的結(jié)果,服務(wù)器方擴(kuò)充,CGI servlet LiveWire Active Server Page (ASP) Enterprise Java Bean (EJB) WAI,瀏覽器方擴(kuò)充,Netscape的plug-in技術(shù), 目前也為IE支持. Microsoft的ActiveX Document技術(shù)(ActiveX技術(shù)的一部分). MIME數(shù)據(jù)類型是它們的共同工作基礎(chǔ)之一.,瀏覽器和服務(wù)器方的共同擴(kuò)充,讓程序從服務(wù)器遷移到瀏覽器執(zhí)行 applet, ActiveX control, JavaScript, VBScript 通信和互操作機(jī)制的加強(qiáng): 分布式對(duì)象/構(gòu)件技術(shù) CORBA, DCOM,瀏覽器,服務(wù)器,Applet ActiveX Control,JavaScript VBScript,HTML Docs,CGI Script servlet LiveWire,Plugin ActiveX Doc,Netscape的plug-in技術(shù),什么是plug-in ? 一個(gè)能和Navigator配合工作的軟件模塊, 幫助它“顯示”新的“數(shù)據(jù)類型”, 或者以一種新的方式顯示某些“老數(shù)據(jù)類型”. 為什么需要plug-in ? “數(shù)據(jù)類型”的種類是無限的, 瀏覽器能顯示的類型總是有限的.,WEB 服務(wù)器,netscape 瀏覽器,plug-in,plug-in 數(shù)據(jù),plug-in 數(shù)據(jù),無限多的數(shù)據(jù)類型,text/plain, text/html, image/gif, image/jpg, audio/au, audio/ra, video/avi, message/, extensions/, application/msdoc, . 數(shù)據(jù)類型: 信息的一種編碼形式. 信息的基本種類是有限的(例如文字,圖像,聲音, 視頻等), 但人們出于不同的應(yīng)用目的, 總會(huì)不斷創(chuàng)造新的編碼形式. 例如Word和PageMaker的文件所采用的編碼是不同的, 盡管它們都是針對(duì)相同的基本信息種類. 因此它們對(duì)應(yīng)不同的數(shù)據(jù)類型.,數(shù)據(jù)類型和信息的顯示,一種廣義的映射關(guān)系, 非常大的一個(gè)概念 “信息的顯示” - 不一定是為了給人看 同一種數(shù)據(jù)類型可以有不同的顯示 數(shù)據(jù)類型還可以是“嵌套”的. 瀏覽器就是實(shí)現(xiàn)這種映射的一個(gè)程序 它要知道所收到數(shù)據(jù)的類型, 以及該數(shù)據(jù)類型設(shè)計(jì)者的“顯示”意圖.,Plug-in 示例,Plug-in 示例,Plug-in 示例,從三個(gè)不同的角度看plug-in,用戶(網(wǎng)頁(yè)編寫者) 的角度: 如何準(zhǔn)備plug-in數(shù)據(jù), 可以期望什么效果 ? 安裝者的角度: 如何將一個(gè)plug-in模塊加到Navigator中 ? 開發(fā)者的角度: 如何實(shí)現(xiàn)一個(gè)plug-in ? 遵照Netscape定義的API和編碼規(guī)則.,在網(wǎng)頁(yè)中使用一種plug-in (數(shù)據(jù)類型),保證潛在的瀏覽器安裝了該plug-in. 如果不清楚, 你可以提供一張“bridge page”來提供該plug-in, 使瀏覽器能首先安裝它. 通過MIME機(jī)構(gòu), 配置你的WEB服務(wù)器,使其能識(shí)別這種plug-in數(shù)據(jù). 用 . 標(biāo)記將該數(shù)據(jù)類型引入你的網(wǎng)頁(yè)中.,EMBED標(biāo)記的一些主要典型屬性,height, width: plug-in在瀏覽器窗口中的大小 (缺省單位為象素?cái)?shù)) src: 一個(gè)指向plug-in數(shù)據(jù)的URL type: 本 plug-in 的MIME類型 hidden: true,false 指示本plug-in是否可見 units: pixel,en, en為當(dāng)前字體點(diǎn)大小的1/2. pluginspage: 一個(gè)指向描述該plug-in的URL. text: 可能的文字內(nèi)容 src和type之一必須出現(xiàn); plugin開發(fā)者可定義其它屬性.,一個(gè)例子,Plain text isnt very exciting, but ,one.txf: 001 255 000 000 000 000 000 two.txf: 002 128 128 128 000 000 000 three.txf: 003 000 000 255 000 000 000 style red green blue xpos ypos factor,注:,在本例中, SRC所對(duì)應(yīng)數(shù)據(jù)文件的擴(kuò)展名對(duì)應(yīng)plugin的數(shù)據(jù)類型. 根據(jù)這個(gè)數(shù)據(jù)類型, 瀏覽器決定啟用哪一個(gè)plugin模塊. EMBED標(biāo)記的屬性和plugin數(shù)據(jù)的解釋關(guān)系由plugin設(shè)計(jì)者決定 在HTML 4.0中, 標(biāo)記作為一種通用描述, 取代了EMBED, APPLET等標(biāo)記,How applet is included in HTML 4 document, Java applet that draws animated bubbles. ,Plug-in的安裝,最常見的錯(cuò)誤是將它的可執(zhí)行碼放到了不正確的目錄中 Windows: “plugins” 文件夾(folder) Mac: “Plug-ins” 文件夾 UNIX: /usr/local/lib/netscape/plugins 或$HOME/.netscape/plugins, 或由環(huán)境變量NPX_PLUGIN_PATH指出的目錄 安全問題:plugin一旦安裝, 就和瀏覽器有同樣權(quán)限.,Plug-in工作的生命周期,用戶訪問一張含有plugin數(shù)據(jù)的網(wǎng)頁(yè); 瀏覽器加載該plugin模塊, 并生成一個(gè)新的運(yùn)行實(shí)例; 瀏覽器為該實(shí)例提供一個(gè)顯示區(qū)域 (在瀏覽器窗口中); 瀏覽器將plugin數(shù)據(jù)傳給該實(shí)例, 并啟動(dòng)它執(zhí)行. Plugin按照它自己的方式顯示數(shù)據(jù) 當(dāng)用戶離開當(dāng)前網(wǎng)頁(yè)時(shí), 該實(shí)例被銷毀. 如果沒有其它實(shí)例, 該plugin模塊被卸載.,Plug-in的對(duì)象模型,基于編碼技術(shù)和規(guī)則, 而不是通過語(yǔ)言支持. 僅考慮實(shí)例創(chuàng)建和函數(shù)調(diào)用等基本機(jī)制. 面向?qū)ο蟪绦蛟O(shè)計(jì)不一定需要面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言 ? class String typedef struct public: const char *string; const char *color; string(const char *s) String; string=s; color = NULL; String *NewString(const char *s) void setColor(const char* c) String *obj=(String *) color=c; malloc(sizeof(String); private: obj-string = s; obj-color=NULL; const char *string; return obj; const char *color; void setColor(String *obj,const char *c) obj-color = c; ,用于開發(fā)Plug-in的API,16個(gè) NPP_ 函數(shù), 由plug-in實(shí)現(xiàn), Navigator調(diào)用; 16個(gè) NPN_ 函數(shù), 由Navigator實(shí)現(xiàn), plug-in調(diào)用. 例如 NPError NPP_SetWindow(NPP instance, NPWindow *window) PluginInstance *This=(PluginInstance *) instance-pdata; This-window = window; NPN_SetStatus(instance, “Creating user interface”); ,瀏覽器調(diào)用plugin中實(shí)現(xiàn)的函數(shù), 傳給它一個(gè)plugin數(shù)據(jù)和一個(gè)window (對(duì)應(yīng)瀏覽器窗口中的一個(gè)區(qū)域) plugin實(shí)例將數(shù)據(jù)建立在自己的空間中 plugin反過來調(diào)用瀏覽器中實(shí)現(xiàn)的函數(shù), 顯示狀態(tài)信息.,NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode; int16 argc, char *argn, char *argv, NPSavedData *saved) int i; instance-pdata=NPN_MemAlloc(sizeof(PluginInstance); PluginInstance *This=(PluginInstance*)instance-pdata; This-window=NULL; This-instance=instance; This-mode=mode; This-iteration=0; This-label=NULL; for (i=0;iiterations=atoi(argvi); if (!stricmp(argni,”label”) This-label=NPN_MemAlloc(strlen(argvi); strcpy(This-label, argvi); return NPERR_NO_ERROR; ,Plug-in API中的數(shù)據(jù)交換部分,NPP_NewStream() NPP_Write() ; plug-in由此得到數(shù)據(jù) NPP_DestroyStream() NPN_NewStream() NPN_Write(); plug-in送數(shù)據(jù)給瀏覽器 NPN_DestroyStream() NPN_GetURL(); plug-in可以直接和一個(gè)遠(yuǎn)程服務(wù)器建立連接, 不一定是HTTP. NPN_PostURL(),有關(guān)plug-in的其它問題,擴(kuò)散與流行 免費(fèi), 或初始版本免費(fèi) plug-in軟件免費(fèi), 但創(chuàng)建plug-in數(shù)據(jù)的工具不免費(fèi) (例如Shockwave) 數(shù)據(jù)免費(fèi) (例如海量天氣數(shù)據(jù), 歷史股票數(shù)據(jù)等), 但表現(xiàn)那些數(shù)據(jù)的plug-in收費(fèi) plug-in在intranets中也許比在Internet中更有用 跨平臺(tái)性: Win95, 3.x, NT, OS/2, Mac, Unixes 通常難以做到 性能: 好于 Java, JavaScript. LiveConnect: Netscape推出的使plug-in 與 Java, JavaScript協(xié)同工作的技術(shù).,ActiveX Documents,Microsoft的瀏覽器方擴(kuò)充技術(shù) (in a very general way) ActiveX技術(shù)的一個(gè)方面 源于OLE, 但富于OLE Internet Explorer 3.0就是由ActiveX Documents構(gòu)筑起來的,Internet Explorer 3.0,將瀏覽器的通用功能和顯示不同對(duì)象的具體功能分離開來 一般功能包括: navigating to a link, going forward and back, IEXPLORE.EXE, 提供一個(gè)基本框架 SHDOCVW.DLL, Web Browser object, 提供通用功能, 作為一個(gè)ActiveX Document Container. MSHTML.DLL, HTML viewer, an ActiveX Document server,Internet Explorer 3.0 (示意),ActiveX/DCOM,嵌入在NT 4.0及以后的系統(tǒng)中. 德國(guó)的Software AG已將DCOM在UNIX上實(shí)現(xiàn) (beta免費(fèi)可得) 從COM到DCOM, 盡管擴(kuò)充的內(nèi)容不很多, 但使得“enterprise computing”計(jì)算在Wintel結(jié)構(gòu)上成為可能. COM是Microsoft所有技術(shù)的根基. 有人比喻, COM對(duì)Microsoft相當(dāng)于粒子物理對(duì)整個(gè)宇宙.,從COM到ActiveX的演變,OLE 1 組合文檔 (字處理,電子表格,數(shù)據(jù)庫(kù),畫圖) COM “各種軟件構(gòu)件怎么能夠相互提供服務(wù) ?” OLE 2 不僅是組合文檔技術(shù), 而是一種使各種 軟件相互作用的通用技術(shù) OLE (不再是一個(gè)縮略語(yǔ)) 1996.1 ActiveX OLE (還原到“組合文檔”) DCOM,構(gòu)件對(duì)象模型Component Object Model (COM),出發(fā)點(diǎn): 讓軟件系統(tǒng)S由構(gòu)件C1, C2, , 組成 (COM object) 這些構(gòu)件C不一定是專門為S所設(shè)計(jì)的, 有些在S之前已存在 為這系統(tǒng)所設(shè)計(jì)的構(gòu)件將來可被其它系統(tǒng)所用, 將來設(shè)計(jì)的構(gòu)件還可用來擴(kuò)充系統(tǒng)S的功能, 不需重新編譯鏈接. 構(gòu)件的內(nèi)部改變不影響其所參與的系統(tǒng)的功能 COM: 給出了一個(gè)關(guān)于什么能被稱為構(gòu)件 (COM 對(duì)象) 的規(guī)定 提供了一種以系統(tǒng)軟件形式存在的基礎(chǔ)設(shè)施, 使得滿足其規(guī)定的構(gòu)件能夠“互操作” (interoperate).,COM對(duì)象,多界面(interface), 每個(gè)界面包含一組方法 每個(gè)界面有兩個(gè)名字, 一是供程序員識(shí)別 (如LookUpWord), 二是GUID (Globally Unique Identifier, 128位), 特殊生成, 供計(jì)算機(jī)使用. 界面通常由Microsoft的IDL(界面描述語(yǔ)言)描述 一旦在發(fā)布的軟件中實(shí)現(xiàn), 界面就再不許修改. 每個(gè)構(gòu)件必須實(shí)現(xiàn)界面 IUnknown, 其它界面必須從它繼承.,COM對(duì)象,界面,界面,界面,一個(gè)簡(jiǎn)單界面的描述,object, uuid(E7CD0D00-1827-11CF-9946-444553540000) interface ISpellChecker: IUnkown import “unknown.idl”; HRESULT LookUpWord (in OLECHAR word31, out boolean *found); HRESULT AddToDictionary (in OLECHAR word31); HRESULT RemoveFromDictionary (in OLECHAR word31); IUnkown 界面有三個(gè)基本方法QueryInterface, AddRef, Release.,ActiveX Document,一種特殊的COM object 要滿足COM object的一些基本要求, 例如實(shí)現(xiàn)IUnknown等 有一些特殊的界面, 例如 只能在ActiveX Document Container中活動(dòng) (ActiveX Document Container本身又是另一種COM object !),VRML (2.0),The Virtual Reality Modeling Language (第二版) /moving-worlds/spec/index.html,什么是VRML (2.0),一種語(yǔ)言, 用于描述三維物體和由它們構(gòu)成的三維場(chǎng)景; 該場(chǎng)景可以具有現(xiàn)實(shí)世界的多種特征、可以是動(dòng)態(tài)的, 也可以和觀察者交互作用. 它最引人入勝的應(yīng)用是使人們能夠在Web上構(gòu)建動(dòng)態(tài)的、具有豐富的傳感效應(yīng)的虛擬環(huán)境 VRML (2.0)不僅是VRML (1.0)的一個(gè)擴(kuò)充.,圍繞VRML(2.0)的活動(dòng),語(yǔ)言的進(jìn)一步發(fā)展,標(biāo)準(zhǔn)化:VRML97 VRML瀏覽器(播放器)的開發(fā) CosmoPlayer, WorldView, Liquid Reality, 等 VRML應(yīng)用開發(fā)工具 /vrml/software/modelers.html VRML應(yīng)用開發(fā) 劇場(chǎng)訂票,商場(chǎng)購(gòu)物,旅游景點(diǎn)介紹,等,VRML的主要能力,描述三維物體及由它們構(gòu)成的場(chǎng)景 動(dòng)畫:使物體在三維空間中運(yùn)動(dòng) 在場(chǎng)景中播放聲音和電影 使觀察者能與場(chǎng)景交互作用:傳感與事件 通過腳本(用Java和JavaScript寫的)使觀察者在場(chǎng)景中的感受更加生動(dòng)。,VRML (2.0) 文件的基本格式,文件擴(kuò)展名:.wrl 第一行必須是:#VRML V2.0 utf8 這也是唯一必須有的內(nèi)容。后面是關(guān)于“節(jié)點(diǎn)”(Node)的描述和注釋 注釋用“#”開始,直到本行結(jié)束 VRML是區(qū)分大小寫字母的 現(xiàn)在的CosmoPlayer對(duì)詞法, 語(yǔ)法錯(cuò)誤的處理非常弱 (難怪免費(fèi)).,例子1: 一個(gè)半開口的圓柱體,#VRML V2.0 utf8 Shape appearance Appearance material Material #用缺省材質(zhì)和顏色 geometry Cylinder radius 3 height 6 side TRUE top FALSE bottom TRUE ,節(jié)點(diǎn)(node),VRML世界的基本單位,其地位相當(dāng)于面向?qū)ο笳Z(yǔ)言中的對(duì)象, 但語(yǔ)義簡(jiǎn)單許多 節(jié)點(diǎn)由若干域(Field)描述. 每個(gè)域包括域名(也稱域的類型)和“值”. 節(jié)點(diǎn)的域可能是簡(jiǎn)單的參數(shù), 如上例中的圓柱體節(jié)點(diǎn)有若干描述圓柱體的具體參數(shù). 節(jié)點(diǎn)的域也可能是另外的節(jié)點(diǎn), 如上例中的Shape節(jié)點(diǎn), 它含有兩個(gè)域, 名字分別為外觀(appearance)和幾何形狀(geometry), 其值都是別的節(jié)點(diǎn). 節(jié)點(diǎn)描述和域的次序無關(guān) 從與外界交互的性質(zhì)上講, 節(jié)點(diǎn)的域分兩類: field, exposedField. (見后),VRML的節(jié)點(diǎn) (續(xù)),有一些系統(tǒng)已定義的節(jié)點(diǎn), 例如 Box, Cylinder, Shape, Material, SpotLight等 它們所含的域(名)是確定的, 例如radius等. VRML文本編寫者的任務(wù)就是要給這些域設(shè)計(jì)適當(dāng)?shù)闹?系統(tǒng)對(duì)這些域有缺省值, 例如Boxsize 2, 2, 2, Sphere radius 1 等. 用戶也可以自定義非規(guī)則幾何體節(jié)點(diǎn) (見后),VRML的節(jié)點(diǎn) (續(xù)),在文本規(guī)范說明中, VRML用特殊的記號(hào)表示節(jié)點(diǎn)中域的值的數(shù)據(jù)類型, 例如 SFBool表示邏輯量, 取值TRUE或FALSE, SFFloat表示浮點(diǎn)數(shù), SFColor表示3個(gè)0-1之間的浮點(diǎn)數(shù), 分別代表RGB 而MFFloat表示包括在方括號(hào)中的、由逗號(hào)或空格分開的多個(gè)浮點(diǎn)數(shù) 這里的SF表示“Single-valued Field”, MF記“Multiple-valued Field” 單值域并不一定就是一個(gè)數(shù)(例如SFColor含有3個(gè)數(shù)), 多個(gè)數(shù)的SF被看成一個(gè)整體.,兩個(gè)節(jié)點(diǎn)定義規(guī)范的例子,DirectionalLight on TRUE # exposed field SFBool intensity 1 # exposed field SFFloat ambientIntensity 0 # exposed field SFFloat color 1 1 1 # exposed field SFColor direction 0 0 -1 # exposed field SFVec3f 其中給出的值為缺省值, exposed field的基本含義是“可修改”. Inline url # exposed field MFString bboxCenter 0 0 0 # SFVec3f bboxSize -1 -1 -1 # SFVec3f , 缺省指示無界 ,VRML的節(jié)點(diǎn)類型,形狀節(jié)點(diǎn)(shape nodes) - 描述物體在空間中的幾何形狀 性質(zhì)節(jié)點(diǎn)(property nodes) - 定義形狀節(jié)點(diǎn)的渲染方式(顏色, 表面紋理等). 成組節(jié)點(diǎn)(group node) - 將多個(gè)其它節(jié)點(diǎn)組合成一個(gè)節(jié)點(diǎn), 以便于統(tǒng)一處理. 還有環(huán)境效果節(jié)點(diǎn), 例如各種性質(zhì)的光源.,描述三維物體及其場(chǎng)景,基本幾何體 geometry: Box, Sphere, Cone, Cylinder 表面特性 appearance: material, texture, . Shape節(jié)點(diǎn): 通過賦予其一定的表面特性,使幾何體可見 空間位置 右手坐標(biāo)系統(tǒng): translation, rotation, scale 組合幾何體 Group, Transform, . 環(huán)境效果 DirectionalLight, PointLight, Spotlight,例子2: 簡(jiǎn)單世界,#VRML V2.0 utf8 Group children DirectionalLight direction 0 0 -1 # the first child Transform # the second child translation 3 0 1 children Shape geometry Sphere radius 2.3 appearance Appearance material Material diffuseColor 1 0 0 Transform # the third child translation -2.4 .2 1 rotation 0 1 1 .9 # 不僅位移, 還要旋轉(zhuǎn) children Shape geometry Box appearance Appearance material Material diffuseColor 0 0 1 ,VRML的坐標(biāo)系統(tǒng),右手坐標(biāo)系統(tǒng), 缺省距離單位是米 基本幾何體的缺省位置是中心位于坐標(biāo)系統(tǒng)的原點(diǎn) Box size 2 2 2 Cone bottomRadius 1 height 2 Cylinder radius 1 height 2 Sphere radius 1 缺省Viewpoint為 (0 0 10).,X,Y,Z,VRML的坐標(biāo)變換,translation x y z 將物體平行位移 rotation x y z r 按右手法則, 將物體圍繞由原點(diǎn)和 (x y z)確定的射線旋轉(zhuǎn)r弧度 scale x y z, 相對(duì)原點(diǎn), 按照給出的比例因子在空間三個(gè)方向上放大(縮小) 注意: 變換是針對(duì)物體上每一個(gè)點(diǎn)的. 在成組節(jié)點(diǎn)中, 變換對(duì)組中的節(jié)點(diǎn)都有效. 嵌套的變換效果疊加, 由內(nèi)向外 變換順序: scale, rotation, translation 還有些可選參數(shù), 例如旋轉(zhuǎn)的原點(diǎn), 放大的中心等,表面特性: Appearance節(jié)點(diǎn),material域: 值為Material節(jié)點(diǎn), 可有如下域 diffuseColor, 顏色的反射與入光角度有關(guān) shineness, 光潔度, 取值 0.0 - 1.0 transparency, 透明度, 取值 0.0 - 1.0 texture域: 值取ImageTexture, MovieTexture, PixelTexture節(jié)點(diǎn)之一 textureTransform域: TextureTransform節(jié)點(diǎn). 用于在施用前對(duì)紋理做空間變換,例子3: 圖像紋理的應(yīng)用,#VRML V2.0 utf8 Shape geometry Box appearance Appearance texture ImageTexture url “ie.gif” ,例子4: 構(gòu)造一個(gè)四面體,#VRML V2.0 utf8 Shape geometry IndexedFaceSet coord Coordinate # 給出4個(gè)頂點(diǎn)的坐標(biāo) point 0 0 1, 1.7 0 -0.5, -1.7 0 -0.5, 0 1 0 # 用頂點(diǎn)序列來說明“面”, -1為分隔符.注意底面的節(jié)點(diǎn)順序, “右手法則” coordIndex 0 2 1 -1, 0 1 3 -1, 1 2 3 -1, 2 0 3 -1 color Color # 造一個(gè)顏色表 color 1 0 0, 0 1 0, 0 0 1, 1 1 0 #紅,綠,藍(lán),黃 colorIndex 1, 0, 2, 3 # 底面(0 2 1)用綠色, 等 colorPerVertex FALSE # 不要按頂點(diǎn)著色 ,VRML的動(dòng)畫能力,Ability to change the world over time 不僅幾何位置的變化,還包括顏色、光線、聲音等。 具體表現(xiàn)在對(duì)有關(guān)節(jié)點(diǎn)屬性值的動(dòng)態(tài)改變 如何啟動(dòng)一個(gè)動(dòng)畫過程 ? - VRML提供各種各樣的“傳感器”節(jié)點(diǎn), 響應(yīng)用戶事件. 如何在時(shí)間上控制一個(gè)動(dòng)畫過程 ?- TimeSensor節(jié)點(diǎn) 如何在行為上控制一個(gè)動(dòng)畫過程 ?- 各種各樣的“插值器”節(jié)點(diǎn) 通過ROUTE語(yǔ)句進(jìn)行事件的傳播:VRML動(dòng)畫的基本機(jī)制,一個(gè)最簡(jiǎn)單的動(dòng)畫例子 (eg5),#VRML V2.0 utf8 Group children DEF PUSH TouchSensor # 和下面的節(jié)點(diǎn)相聯(lián)系 Shape geometry Cone appearance Appearance material Material diffuseColor 1 0 1 Sound # 定義一個(gè)音響節(jié)點(diǎn) source DEF BUZZ AudioClip url “mssound.wav“ maxFront 50 # no sound heard beyond minFront 5 # no change in volume within ROUTE PUSH.touchTime TO BUZZ.startTime,VRML的聲音和文字,Sound節(jié)點(diǎn), 可以定義聲源在場(chǎng)景中的位置, 以及該聲音能被聽到的范圍 AudioClip節(jié)點(diǎn), 出現(xiàn)在Sound節(jié)點(diǎn)的source域中, 指出聲音文件. 該節(jié)點(diǎn)還含有l(wèi)oop, startTime, stopTime等exposed fields以控制聲音播放 Text節(jié)點(diǎn), 作為一種geometry節(jié)點(diǎn), 給出文字信息 FontStyle節(jié)點(diǎn), 出現(xiàn)在Text節(jié)點(diǎn)的fontStyle域中, 描述文字的字體等,文字例子 (eg6),#VRML V2.0 utf8 Shape geometry Text string “Internet and Java Technologies“ fontStyle FontStyle size 1.5 family “SERIF“ style “BOLD“ ,VRML的事件: 交互與動(dòng)態(tài)的基礎(chǔ),事件是某些節(jié)點(diǎn)的性質(zhì)(在VRML的53種節(jié)點(diǎn)中, 多數(shù)與事件有關(guān)) 如何知道什么節(jié)點(diǎn)與什么事件有關(guān) 節(jié)點(diǎn)規(guī)范中的顯示說明 節(jié)點(diǎn)的exposed Field域隱含相關(guān)事件 ROUTE語(yǔ)句: 讓不同節(jié)點(diǎn)之間事件相互聯(lián)系的手段 (起一個(gè)類似于賦值語(yǔ)句的作用),接觸傳感器規(guī)范說明的例子,TouchSensor enabled TRUE # exposed field SFBool Field enabled 指出該傳感器當(dāng)前是否處于工作狀態(tài) Events isOver eventOut, SFBool, 指出鼠標(biāo)正放在兄弟幾何節(jié)點(diǎn)之上 isActive eventOut, SFBool, 指出鼠標(biāo)已經(jīng)按下 touchTime eventOut, SFTime, 指出鼠標(biāo)按下后釋放的時(shí)間 hitPoint_changed eventOut, SFVec3f, 指出位置的變化 hitNormal_changed eventOut, SFVec3f, 指出法線的變化 hitTexCoord_changed eventOut, SFVec2f, 指出紋理坐標(biāo)的變化,Transform bboxCenter 0 0 0 # SFVec3f bboxSize -1 -1 -1 # SFVec3f translation 0 0 0 # exposed field SFVec3f rotation 0 0 1 0 # exposed field SFRotation scale 1 1 1 # exposed field SFVec3f scaleOrientation 0 0 1 0 # exposed field SFRotation center 0 0 0 # exposed field SFVec3f children # exposed field MFNode 任何一個(gè)exposed field都隱含對(duì)應(yīng)兩個(gè)事件, 于是Transform相當(dāng)于有事件 set_translation (輸入事件, eventIn) translation_changed (輸出事件, eventOut) set_rotation, rotation_changed, 等等,TimeSensor,TimeSensor cycleInterval 1 # exposed 秒為單位的周期長(zhǎng)度 enabled TRUE loop FALSE # exposed 是否應(yīng)無限重復(fù) startTime 0 stopTime 0 還有專門eventOut事件fraction_changed, 表示當(dāng)前周期(cycleInterval)已經(jīng)完成.,PositionInterpolator: 位置插值器,PositionInterpolator key # exposed field MFFloat keyValue # exposed field MFVec3f

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論