全景播放器js调用API

全景加载完成事件

function Flash3dViewLoadCompleteHanlder(){

}

注意:该方法只运行一次。

Flash3dViewLoadPanoCompleteHanlder(){

}

注意:该方法在全景切换的时候都会触发

内部可调用的函数列表

1. 函数列表

初始化参数:

var flashobj=document.getElementById("OuWeiHDPlayer");

其中OuWeiHDPlayer表示播放器名称。

flashobj.runAction(string)

作用:运行Action函数。

参数:可以设置已经在XML节点里面的action列表

返回值:空

示例:

    <actions>
        <action id="hideBubble" content="InfoBubble.hide()"/>
        <action id="loading" content="ImageButton.setOpen(loadingswf,true)"/>
        <action id="loadcomplete" content="ImageButton.setOpen(loadingswf,false)"/>
    </actions>
    flashobj.runAction(hideBubble);
flashobj.runActionCotent(string)

作用:运行ActionContent函数。

参数:string参数为模块数据(参考可调用的模块函数

返回值:空

示例:

    flashobj.runActionCotent("ImageMap.setOpen(false);Compass.toggleOpen()")
flashobj.getActionList()

作用:得到所有的actionid列表

参数:无

返回值:

    类型:字符串,以逗号分开

    示例:hideBubble,loading,loadcomplete......
flashobj.getCurrentPanoInfo()

作用:得到当前场景的所有信息

参数:无

返回值:

    类型:JSON

    示例:         
            {
                id:0  场景ID
                pan:0 当前水平视角
                tilt:0, 当前垂直视角
                fov:0,  当前视野
                title:""  当前场景的标题
                desc:"",  当前场景的说明
                gps:"",  当前场景的GPS
                hot:""  当前场景的所有热点信息(含路径)
            }
flashobj.getAllPanoInfo()

作用:得到所有的场景的信息

参数:无

返回值:

    类型:JSON(多组)
    示例:
         {
                id:0  场景ID
                pan:0 当前水平视角
                tilt:0, 当前垂直视角
                fov:0,  当前视野
                title:""  当前场景的标题
                desc:"",  当前场景的说明
                gps:"",  当前场景的GPS
                hot:""  当前场景的所有热点信息(含路径)
        }
        {
                id:1  场景ID
                pan:0 当前水平视角
                tilt:0, 当前垂直视角
                fov:0,  当前视野
                title:""  当前场景的标题
                desc:"",  当前场景的说明
                gps:"",  当前场景的GPS
                hot:""  当前场景的所有热点信息(含路径)
        }
        ……
flashobj.waitThen(time,actionid)

作用:等待一会再执行actionid

参数:

        time —— 时间,单位秒
    actionid —— ActionID

返回值:空

flashobj.moveToHotspot(hotid,fov)

作用:跳转到热点

参数:

    hotid —— 热点id 
      fov —— 视角(0~180)

返回值:空

flashobj.moveToHotspotThen(hotid,fov,actionid)

作用:跳转完成后并执行actionid事件

参数:

    hotid —— 热点id
      fov —— 视角(0~180)

返回值:空

flashobj.addActionContent("actionid","actioncontent")

作用:增加actionid 的内容

参数:

    actionid —— action的id
    actioncontent —— action的内容

返回值:空

flashobj.loadPano(panoid)

作用:加载全景ID

返回值:空

flashobj.addXmlHotContent(string,string,string)

作用:添加热点

参数:

第一个参数为热点内容
第二个参数为热点id
第三个参数为场景ID (可选,空的话,则是当前场景)

返回值:空

示例:

  var s = '[image id="ap8616" isnew="true" path="http://img.detuyun.cn/flash/qj_common/res/path20141124/danjiantou.png"'+
                         ' location="pan:0,tilt:1" mouse="onClick:load_qjcl_10517_ap8616"   '+
                         ' nextpan="-149"   nexttilt="0"   nextfov="90"  text="场景6666" '+
                         ' textarg="h:20,s:30|0|90|30,bg:0x000000,bg1:qj_common/res/path20141124/icon/biaoqian.png,bg2:qj_common/res/path20141124/icon/jiantou-you.png" '+
                         ' alpha="0.8"  overalpha="1" /]';


    document.getElementById("container").addXmlHotContent(s,"ap8616");

2. 可调用的模块函数:

(1) 控制键

flashobj.ButtonBar.toggleOpen()

作用:控制键开与关

参数:无

返回值:空

flashobj.ButtonBar.setOpen(bool)

作用:控制键开关

参数:

     true —— 开 
     false —— 关

返回值:空

flashobj.ButtonBar.setActive(string,bool)

作用:激活事件

参数:

        left —— 向左
       right —— 向右
          up —— 向上
        down —— 向下
          in —— 向里面
         out —— 向外面 
autoratation —— 自转
  fullscreen —— 全屏
           g —— 上一个全景
           f —— 打开缩略图列表
           d —— 开关背景音乐
           h —— 下一个场景

返回值:空

flashobj.ButtonBar.toggleActive(string)

作用:激活事件开与关

参数:

        left —— 向左
       right —— 向右
          up —— 向上
        down —— 向下
          in —— 向里面
         out —— 向外面 
autoratation —— 自转
  fullscreen —— 全屏
           g —— 上一个全景
           f —— 打开缩略图列表
           d —— 开关背景音乐
           h —— 下一个场景

返回值:空

(2)指南针

flashobj.Compass.toggleOpen()

作用:指南针开与关

参数:无

返回值:空

flashobj.Compass.setOpen(bool)

作用:指南针开与关

参数:

       true —— 打开 
      false —— 关闭

返回值:空

(3)播放器插件

flashobj.ImageButton.setOpen(string,bool)

作用:播放器插件使用

参数1:

    ID值(xml里面的)

参数2:

    true —— 打开
   false —— 关闭

返回值:空

(4)地图

flashobj.ImageMap.setOpen(bool)

作用:是否打开地图

参数:

    true —— 是 
   false —— 否

返回值:空

flashobj.ImageMap.setMap(mapid)

作用:切换地图

参数:

    mapid为XML里面的mapid

返回值:空

高级版命令

1. 调用的命令

(1)view 打头的表示 manager

(2)module 打头的表示对应模块

(3)hot 打头的表示热点

(4)imagebutton 打头的表示 imagebutton 模块里的按钮(为了方便找到对应的按钮)

(5)acButton 打头的表示是在 actionCode 里的按钮

(6)copy(view.pan,30);

作用:赋值命令

参数:

    参数1表示key

    参数2表示value值

(7)call(module.MuseumItemModule.jumpItem,museum_53aa9e448246a,5);

作用:调用action命令

参数:

    参数1表示方法名

    后面的参数都是这个方法的参数

(8)wait(1);

作用:等待命令

参数:

    等待到下一条命令的时间,单位是秒

(9)

tween(acButton.btn5,1,true,x:@getPx_imageButton.buttonPlayScript_center_0,y:@getPy_imageButton.buttonPlayScript_top_50);

作用:缓动命令

参数:

    第一个参数为缓动对象

    第二个参数为缓动时间, 单位是秒

    第三个参数表示是否要执行完该缓动后再执行下一条命令

    后面跟的参数都是缓动的目标值,以key:value形式存在

(10)@getPx_imageButton.buttonPlayScript_center_0

@getPy_imageButton.buttonPlayScript_top_50

作用:这两个表示取到某个对象相对于容器的位置

参数:

    getPx  表示获取X值

    getPy  表示获取Y值

    imageButton.buttonPlayScript  这个表示某个对象

    center 和 top  表示相对位置

    0 和 50  表示偏移值

(11)pop(acButton.btn1,true,0.2);

作用:冒泡命令

参数:

    第一个参数为冒泡对象

    第二个参数表示是否要执行完该冒泡后再执行下一条命令

    第三个参数为冒泡时间,单位是秒

(12)js(funName,arg1);

作用:js命令

参数:

    第一个参数为js方法名

    后面跟的参数都是这个JS方法需要的参数

(13)open(http://www.baidu.com,_blank)

作用:打开网页命令

参数:

    第一个参数为打开的网址

    第二个参数为打开方式

(14)

createButton(name:btn1,horizontal:center,vertical:middle,moveHorizontal:-50,moveVertical:-50,path:stop.png,click:ac122,loadCmpToNext:false,visible:false);

作用:添加按钮命令,该按钮会被添加到actionCode的layer上。

参数:

     KEY:VALUE  形式

    name:btn1  表示按钮名

    horizontal:center,vertical:middle,moveHorizontal:-50,moveVertical:-50  表示相对位置

    path:stop.png  表示按钮资源地址

    click:ac122  表示按钮按下的事件为actionCodeId

    loadCmpToNext:false  表示是否要资源加载完再执行下一条命令

(15)removeButton(btn1);

作用:删除按钮命令

参数:

    参数为删除对象的名字,与 createButton命令对应

(16)foreach(module.ImageButton.imageButtonData.buttons,ac123,id);

作用:循环命令。

参数:

    第一个参数为一个数组

    第二个参数为循环中执行的actionCodeId

    后面跟的都是传递的参数

(17)ifelse(@var_1,==,buttonPlayScript2,ac1234,null,@var_1);

作用:条件判断命令。

参数:

    第一个参数为key

    第二个参数为判断符号

    第三个为value值

    第四个是条件满足的时候执行的actionCodeId

    第五个是条件不满足的时候执行的actionCodeId

    后面跟的都是传递的参数,@var_1、@var_2 这些是表示别的actionCode里传过来的参数,顺序从1开始。

(18)setCanControl(bool)

作用:是否可操作命令。

参数:

 true 表示可操作
false 表示不可操作

(19)addEvent(view,panoramaLoaded,ac12345,view.loadPanoramaById,qjcl_6179);

作用:注册事件命令,运行到该命令时,命令队列会停止,直到触发事件。

参数:

    第一个参数为注册事件的对象

    第二个参数为事件type

    第三个为事件触发的时候运行的actionCodeId

    第四个是注册完事件后调用的方法名

    后面跟的都是这个方法需要的参数

2. 示例

(1) for if 举例

var s2 = '[actioncodes]  '+
     '[actioncode id="ac1"]'+
     foreach(module.ImageButton.imageButtonData.buttons,ac123,id);'+
 ' [/actioncode]'+
  ' [actioncode id="ac123" ]'+
'    ifelse(@var_1,==,buttonPlayScript2,ac1234,null,@var_1);'+
'  [/actioncode>'+
'   [actioncode id="ac1234" ]'+
'    call(module.ImageButton.setOpen,@var_1,false);'+
 ' [/actioncode]    '+
'[/actioncodes] ';

document. getElementById("container").addActionCodes(s2);
document. getElementById("container").runActionContent("ActionsCode.runById(ac1)");

有这么三个actionCode:

(1) id="ac1" 的actionCode里执行了 foreach(module.ImageButton.imageButtonData.buttons,ac123,id);方法, 表示将module.ImageButton.imageButtonData.buttons里的元素的id值传递到id="ac123" 的actionCode里。

(2) id="ac123" 的actionCode里执行了ifelse(@var_1,==,buttonPlayScript2,ac1234,null,@var_1);方法,表示判断@var_1(此时已经被替换成module.ImageButton.imageButtonData.buttons[i].id)是否==buttonPlayScript2, 是的话执行id="ac1234" 的actionCode ,并且把 @var_1传递过去。

(3) id="ac1234"的actionCode里执行了ImageButton.setOpen方法

以上示例代码转化成伪代码就是:

for(var i:int=0;i<module.ImageButton.imageButtonData.buttons.length;i++){
    var item = module.ImageButton.imageButtonData.buttons[i];
    if(item.id == "buttonPlayScript2"){
        ImageButton.setOpen(item.id,false);
    }
}

(2)addEvent举例

[actioncodes]  
     [actioncode id="ac1" ]
     addEvent(view,panoramaLoaded,ac12345,view.loadPanoramaById,qjcl_6179);
     copy(view.pan,90);
  [/actioncode]
   [actioncode id="ac123" ]
    tween(view,1,true,pan:20,fieldOfView:30);
  [/actioncode]
[/actioncodes]

(1)当运行id="ac1" 的actionCode时执行addEvent命令,表示manager监听panoramaLoaded事件,并且跳转到qjcl_6179全景。

(2)当qjcl_6179全景加载完成时候,触发运行id="ac12345" 的actionCode ,完成缓动后回来执行copy命令。

(3)完整示例

<input type="button" name="sc" value="sc" onclick="hid()" />
function hid()
{
    var s2 = "[actioncodes]"+
       "[actioncode id='ac1']"+
      "ifelse(qjcl_4917,==,view.currentPanoramaData.id,ac2,ac3);"+
      "[/actioncode]"+
      "[actioncode id='ac2' ]"+
         "call(view.advancedMoveToView,0,0,null,10,null);"+
    "[/actioncode]"+
     "[actioncode id='ac3' ]"+
         "addEvent(view,panoramaLoaded,ac4,view.loadPanoramaById,qjcl_4917);"+
    "[/actioncode]"+
     "[actioncode id='ac4' ]"+
         "wait(1);\n"+
         "call(view.advancedMoveToView,0,0,null,10,null);"+
    "[/actioncode]"+
    "[/actioncodes]";


    document. getElementById("container").addActionCodes(s2);
    document. getElementById("container").runActionContent("ActionsCode.runById(ac1)");

}