我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>行业头条

Flash与webmax的交互控制 教程源码

文章来源:上海创图网络科技发展有限公司 作者: 发布时间:2010年06月11日 点击数: 字号:

    来源:上海创图网络科技发展有限公司

    来源: 上海创图网络科技发展有限公司

    该部分讲述如何进行Flashwebmax的通信,准确地说是Flashjavascript的通信

 

    引入Flash使得 webmax设计更加美观。

 

    一、重点的函数介绍:

 

    getURL---FlashactionScript的脚本函数。它可以调用新的页面,也可以调用页面的script代码。

 

    调用页面的script函数代码的格式:getURL"javascript:调用的函数名(‘参数’)");

 

    下面以一个简单的例子说明一下流程:

 

    实现单击flash按钮,html弹出一个提示框。

 

    1、在flash 做一个空电影clip,再做一个按钮。将它们调入场景中,并选上按钮按F9添加代码:

 

    onrelease

 

    {

         getURL("javascriptFlashPlayerOver('orange')");

 

    //这个命令用来调用html页面的javascript的函数 FlashPlayerOver(orange)

        }

 

   2、在html页面里面加入flash如下:  

 

   可以嵌入一个table的列单元。

 

   3、在html页面中添加javascript代码,即添加函数FlashPlayerOver(flashname)

 

   function FlashPlayerOver(flashname)

   {

    alert("you are a "+flashname);

   }

 

   浏览html页面,首次会弹出flash的验证,设置为允许就ok

 

   二、按键控制

 

  该部分讲述如何通过键盘进行操作。

 

  1、要设置html响应的按键的操作函数为我们自己定义的函数。

 

    在函数SceneIsDown()中声明我们要自己定义的函数,添加如下代码:

 

   document.onkeyup=KeyUpEvent;   //当一个按键弹起时执行自定义函数 KeyUpEvent()

   document.onkeydown=KeyDownEent;  //当一个按键按下时执行自定义函数 KeyDownEvent()

 

  2、实现自己定义的函数

 

   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;       

   }

 

   }

 

    三、 鼠标控制模型的实现

 

    该部分分为4个小部分,介绍了如何在webmax里面实现鼠标的响应事件:

 

    鼠标按下与鼠标抬起,鼠标移动,鼠标双击,模型组的鼠标等事件。

 

    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----值为10,表示是否单击上了

 

                      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)函数类似。

 

    2、鼠标移动事件

 

    首先在 function SceneIsDown()里面加:

 

    设置模型是否响应鼠标事件,包括鼠标停靠与单击。

 

    VGS2.SetModelMouseHintmodename,1);

 

    接着设置鼠标移动回调函数:VGS2.EnableMouseMoveCallback();

 

    新建鼠标移动处理函数

 

        function function VGSMouseMove(LocH, LocV, type, modelUnderLoc )

 

     {

 

     if (type == 1)//表示移动上模型时

 

            {

 

                 switch (modelUnderLoc)//根据模型的名字来识别

 

               {

 

          Case  modename: 

 

     处理的方法 break;

 

        }

 

       }else //表示没有移动物体时。

 

       {

 

        别的操作。

 

     }

 

     }

 

     3、鼠标双击事件

 

    首先在function SceneIsDown()里面加:

 

    设置模型是否响应鼠标事件,包括鼠标停靠与单击。

 

    VGS2.SetModelMouseHintmodename,1);

 

    接着设置鼠标双击回调函数:

 

    VGS2.EnableMouseDBClickCallback();

 

    新建鼠标的双击函数

 

    function VGSMouseDBClick( LocH, LocV, type, modelUnderLoc )

 

    {

 

    if (type == 1)//表示双击上模型时

 

      {

 

           switch (modelUnderLoc)//根据模型的名字来识别

 

          {

 

         Case modename: 

 

    处理的方法 break;

 

        }

   

      }else

 

      {

 

    }

 

    }

 

    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);

 

             }

 

    实现模型组的单击事件与鼠标移动事件的过程跟单个模型是一样的。

 

  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料