1.3.7 Flash与webmax的交互控制 该部分讲述如何进行Flash与webmax的通信,准确地说是Flash与javascript的通信 引入Flash使得 webmax设计更加美观。 重点的函数介绍: getURL---是Flash的actionScript的脚本函数。它可以调用新的页面,也可以调用页面的script代码。 调用页面的script函数代码的格式:getURL("javascript:调用的函数名(‘参数’)"); 下面以一个简单的例子说明一下流程: 实现单击flash按钮,html弹出一个提示框。 ⑴在flash 做一个空电影clip,再做一个按钮。将它们调入场景中,并选上按钮按F9添加代码: on(release) { getURL("javascript:FlashPlayerOver('orange')"); //这个命令用来调用html页面的javascript的函数 FlashPlayerOver(orange) } ⑵在html页面里面加入flash如下: 可以嵌入一个table的列单元。 ⑶在html页面中添加javascript代码,即添加函数FlashPlayerOver(flashname)。 function FlashPlayerOver(flashname) { alert("you are a "+flashname); } 浏览html页面,首次会弹出flash的验证,设置为允许就ok。 1.3.8 按键控制 该部分讲述如何通过键盘进行操作。 ⑴要设置html响应的按键的操作函数为我们自己定义的函数。 在函数SceneIsDown()中声明我们要自己定义的函数,添加如下代码: document.onkeyup=KeyUpEvent; //当一个按键弹起时执行自定义函数 KeyUpEvent() document.onkeydown=KeyDownEent; //当一个按键按下时执行自定义函数 KeyDownEvent() ⑵实现自己定义的函数 function KeyDownEent()//响应键盘的键按下 { switch(event.keyCode) //event.keyCode 返回一个数字用来对应键盘上的按键 {
case 87: //判断keyCode 87对应的是键盘上的 W 键 VGS2.PlayerGoForward(); //press key w W Go forward 此函数为WEBMAX函数更多信息请参刊数手册 break; default: break; } } function KeyUpEvent()/, /响应键盘的键抬起 { switch(event.keyCode) //event.keyCode 返回一个数字用来对应键盘上的按键 { case 87: //判断keyCode 87对应的是键盘上的 W 键 VGS2.PlayerStop(); //when key w W up stop Go left 此函数为WEBMAX函数更多信息请参刊数手册 break; default: break; } } 1.3.9 鼠标控制模型的实现 该部分分为4个小部分,介绍了如何在webmax里面实现鼠标的响应事件: 鼠标按下与鼠标抬起,鼠标移动,鼠标双击,模型组的鼠标等事件。 1.3.9.1 单击模型事件 ⑴首先在 function SceneIsDown()里面(函数位置没有规定)添加 VGS2.SetModelMouseHint(“modelName”, bFlag) 函数说明:设置模型是否响应鼠标事件,包括鼠标停靠与单击。 参数: Ø modelName 模型的名称。 Ø bFlag 模型是否响应鼠标事件。1为启用,0为禁用。 例: VGS2.SetModelMouseHint(“modename”, 1); 接着设置鼠标的单击回调函数。 VGS2.EnableMouseUpCallback(); VGS2.EnableMouseDownCallback(); ⑵新建鼠标单击处理函数 function VGSMouseUp( LocH, LocV, type, modelUnderLoc , ID1, ID2) 函数说明:处理鼠标单击弹起的响应的函数 参数:LocH,LocV---鼠标单击上时的平面坐标 Type----值为1或0,表示是否单击上了 modelUnderLoc---表示单击上的模型的名字 例子: function VGSMouseUp( LocH, LocV, type, modelUnderLoc , ID1, ID2) { if (type == 1)//表示单击上时 switch (modelUnderLoc)//根据模型的名字来识别 { Case modename: 处理的方法 break; } }else //没有单击上时。 { //别的操作 } } function VGSMouseDown( LocH, LocV, type, modelUnderLoc , ID1, ID2); //处理鼠标按钮下时的响应的动作函数,与VGSMouseUp(LocH, LocV, type, modelUnderLoc , ID1, ID2)函数类似。 1.3.9.2 鼠标移动事件 ⑴首先在 function SceneIsDown()里面加: 设置模型是否响应鼠标事件,包括鼠标停靠与单击。 VGS2.SetModelMouseHint(modename,1); 接着设置鼠标移动回调函数:VGS2.EnableMouseMoveCallback(); ⑵新建鼠标移动处理函数 function function VGSMouseMove(LocH, LocV, type, modelUnderLoc )中 { if (type == 1)//表示移动上模型时 { switch (modelUnderLoc)//根据模型的名字来识别 { Case modename: 处理的方法 break; } }else //表示没有移动物体时。 { 别的操作。 } } 1.3.9.3 鼠标双击事件 ⑴首先在function SceneIsDown()里面加: 设置模型是否响应鼠标事件,包括鼠标停靠与单击。 VGS2.SetModelMouseHint(modename,1); 接着设置鼠标双击回调函数: VGS2.EnableMouseDBClickCallback(); ⑵新建鼠标的双击函数 function VGSMouseDBClick( LocH, LocV, type, modelUnderLoc ) { if (type == 1)//表示双击上模型时 { switch (modelUnderLoc)//根据模型的名字来识别 { Case modename: 处理的方法 break; } }else { } } 1.3.9.4 模型组的鼠标事件 如果处理的是一群实体的话呢,比如我们想鼠标单击某一模型时,多个模型就运动 或变化。为了简便地操作,我们可以把相关联的模型构成一个组一起操作。 ⑴首先先建一个模型组 VGS2. CreateModelGroup(modelGroupName); 例子:VGS2.CreateModelGroup("HONGTASHAN"); // HONGTASHAN是模型组的名称 ⑵再往模型组里面添加模型对象。 使用的函数: AddModelToModelGroup(modelGroupName, modelName) 增加模型到模型组。 参数: modelGroupName 模型组对象的名称 modelName 模型的名称。 SetModelMouseHintType(modelName, type) 函数说明:设置模型是否响应鼠标事件的方式,有两种方式可供选择,一种是以模型为单元响应鼠标事件;一种是以模型所在的模型组为单元响应鼠标事件。譬如设置BOX1当鼠标移上时变为红色,选中后变为绿色,当设置响应类型为[模型]响应方式效果正常;但如果设置为[模型组]响应方式时,当鼠标移上BOX1时,BOX1所在的ModelGroup中的所有物体均会变成红色,选中后均会变成绿色。 参数: Ø sModelName 模型的名称。 Ø type 模型鼠标响应事件的类型。 0-[模型]响应方式 1-[模型组]响应方式 例: VGS2.SetModelMouseHintType("HONGTASHAN"+i, 1); 下面的例子实现设置新建一个模型组,并且对每一个添加入模型组的模型设置鼠标移动上变化的颜色与透明度,以及设置模型对鼠标事件的响应方式。 for(var i=1;i<=3;i++) { //把模型对象HONGTASHANi添加到模型组"HONGTASHAN"来 VGS2.AddModelToModelGroup("HONGTASHAN", "HONGTASHAN"+i); //设置模型响应单击事件 VGS2.SetModelMouseHint("HONGTASHAN"+i, 1); //设置模型当鼠标单击与停靠时变化的颜色与透明度 VGS2.SetModelMouseColor("HONGTASHAN"+i, 255, 0, 0, 200, 255, 0, 0, 200); VGS2.SetModelMouseHintType("HONGTASHAN"+i, 1); } 实现模型组的单击事件与鼠标移动事件的过程跟单个模型是一样的。 上一页 [1] [2] [3] [4]
|