krpano的JavaScript接口使用

本文主要介绍如何使用krpano的JavaScript接口,来实现播放器的展示数据以及效果添加。

创建全景播放器

创建播放器是krpano在线展示的一个必经过程,那么如何创建播放器呢?将krpano客户端对应的krpano.js代码和krpano.swf等相关资源文件,存放到一个站点可以访问的位置。假如存放到站点的根目录下,访问基础地址为http://localhost/。那么构建播放器的样例代码如下:

index.html

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <script type="text/javascript" src="./krpano.js"></script>
  <style type="text/css">
    html,body{width:100%;height:100%;}
  </style>
</head>
<body>
   <div id="container" style="width:100%;height:100%;"></div>
  <script type="text/javascript">
    var config = {target: "container", swf: "krpano.swf", xml: "index.xml", html5: "prefer"}
    embedpano(config)
  </script>
</body>
</html>

注:config参数中,只有target、swf、xml三项是必填的。想要了解更多参数请点这里。那么为什么在这里的html5参数设置了prefer呢?个人经过试验,在大多数支持html5播放的情况下,使用html5模式会比flash模式拥有更佳的性能和体验。

index.xml

<?xml version="1.0" encoding="utf-8" ?>
<krpano>
  <security>
    <allowdomain domain="*" />
  </security>
</krpano>

注:krpano默认的展示效果的相关数据,都由XML文件来指定。上述配置文件并没有相关的效果数据,所以创建好播放器后只有一个没有任何内容效果的空播放器。配置中security的allowdomain声明允许跨域调用的跨域域名,由dimain的值指定对应域名(*表示允许任意域名)。在非必要的情况下,为了安全性起见建议不要使用*

krpano Javascript-Interface object

想要调用krpano的JS接口,光创建播放器还不够,还需要获得播放器的krpano Javascript-Interface object。

获取接口对象

在创建播放器时,可以通过config的onready参数传入回调函数来获取krpano Javascript-Interface object。修改页面的JS代码如下:

var krpanoReady = function(krpano){
  //函数传入的krpano参数就是krpano Javascript-Interface object
  //显示krpano打印窗口
  krpano.call("showlog()")
}
var config = {target: "container", swf: "krpano.swf", xml: "index.xml", html5: "prefer", onready: krpanoReady}
embedpano(config)

接口对象的方法

krpano Javascript-Interface object拥有 set(variable,value)get(variable)call(action)spheretoscreen(h,v)screentosphere(x,y)这五个方法。那么要通过JS来设置播放器的效果,主要通过set、get、call这三个方法。使用这些方法前,需要先点这里了解一下krpano实现的简单动态脚本语言。

set(variable,value)

定义或者设置krpano动态脚本语言的变量值。使用例子如下:

//定义或设置变量a为1
krpano.set("a", 1)
//设置name为layer_1的layer对应visible属性为false
krpano.set("layer[layer_1].visible", false)
//设置name为layer_1的layer对应html属性为'txt'
krpano.set("layer[layer_1].html", "txt")

get(variable)

获取krpano动态脚本语言的变量值,当变量值未定义时返回null。使用例子如下:

//获取变量值
var a = krpano.get("a")
//获取name为layer_1的layer对应visible属性
var visible = krpano.get("layer[layer_1].visible")

call(action)

执行指定的任意krpano动态语言语句。使用例子如下:

//显示krpano打印窗口
krpano.call("showlog()")

通过JavaScript添加场景

上述样例代码只创建了一个空播放器,那么我们怎么样使用JavaScript来添加场景等相关播放器数据呢?

我们先来看一下,如何添加并设置一个场景的图片资源。JS代码如下:

var krpanoReady = function(krpano){
  var xml = '<scene name="scene_1"><image><sphere url="sphere.jpg" /></image></scene>'
  krpano.call("loadxml(" + xml + ");loadscene(scene_1);")
}
var config = {target: "container", swf: "krpano.swf", xml: "index.xml", html5: "prefer", onready: krpanoReady}
embedpano(config)

添加数据主要通过调用krpano动态语言的loadxml方法实现。那么loadscene方式的作用是:根据指定scene的name来加载并渲染指定的场景。详细请参考krpano文档

loadxml不止可以添加场景,还可以添加任何krpano的XML配置允许的数据来达到展示效果。比如添加plugin、layer、hotspot等。但是loadxml有一定的限制,当执行loadxml时,会将没有声明keep属性为true的数据对象都移除并切换掉当前的场景。时间有限,今天的就先介绍到这里。使用loadxml相关注意的具体应用问题,在后续的文章中进行介绍。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,466评论 25 708
  • 致高考后 楼高倚遍顿生空,人事当年如梦中。 前路依稀去与住,知音寥落西和东。 门边旧水凝新碧,树下鲜花争老红。 应...
    听我说件事阅读 201评论 0 6
  • 凌晨3:30,听时间哒哒前行。浓稠的黑幕里,秒针上的荧光颤颤悠悠,一点一点爬出一条弧线。 打开床头灯,蓝色的香薰炉...
    绎如阅读 479评论 6 2
  • 其实好的不止妈妈,太婆也是我生命中不可或缺的一部分。太婆呢,就是爷爷的妈妈,爸爸的奶奶。 我的家族甚是庞大,曾经一...
    咸阳阅读 457评论 0 2