krpano的各个事件event的先后次序(时间节点)是怎样的?

这次再谈krpano事件/动作的时间节点,是因为在krpano1.18中对于action元素新增了autorun属性,目的就是让具有该属性的action能够在漫游启动时自动运行。

krpano的时间轴

krpano有不少在全景载入前后的事件,它们之间的先后顺序有必要搞清楚。下面按顺序说明全景载入时可以监测到的krpano事件。

krpano时间轴详解

1 autorun[name].autorun=”preinit”

对任意action添加autorun属性,然后将autorun值设为preinit,这样的话,这个action将在漫游启动时优先调用于任何事件和动作,当多个action都具有该属性时,则按照action的载入顺序执行。注意此时因为还没载入scene,因此对当前scene的数据获取均为null。代码写法如下

2 krpano.onstart

在默认皮肤中,你可能有N个scene的标签,但如果没有通过loadscene,这些scene的内容是不会被载入到内核中进行解析的,在krpano标签的onstart属性里,你可以在这里添加任何action、修改任何元素的属性。因此在1.18的默认模版中,我们可以看到一个名为startupaction,其中就有一个loadscene的action,通常在没有传入scene的name时,会选择载入第一个场景(即scene[0])。注意此时因为还没载入scene,因为当前scene的数据的获取都是null。只要是loadscene之前的,都获取不了当前scene的内容。

3 autorun[name].autorun=”onstart”

对任意的一个action,添加autorun属性,然后将autorun值改为onstart,这样的话,这个action将在漫游启动时调用,当多个action都具有该属性时,则按照载入(书写)顺序执行。该设置的动作直接在krpano.onstart之后执行。如果在krpano的onstart中具有loadscene,或者其它相同具有该属性的前面的action中含有loadscene动作,则可以调用当前scene的信息。

onremovepano

接下来从内存中移除前一个全景的图像文件。也就是上一个场景的全景图像。

5 scene.onstart

在krpano的onstart里有一个startup,其中执行了一次loadscene(1.18之前的默认皮肤的做法,如今新的默认皮肤在krpano 1.19的onstart中不会有任何的action,启动第一个场景采用自启动action的写法,也就是上面一种),因此默认第一个scene的xml内容被载入,也就是这个scene的所有内容要被viewer解析,这些代码解析完后,就到这个scene的onstart出场。这个onstart可以定义pano的view以及image以及一切可能的action。

6 onxmlcomplete

xml代码载入完毕,包括之前在onstart定义的action在这里解析完毕。从这个时刻开始载入预览图。只要有新的xml代码载入(loadpano或者是在html文件定义xml路径)就会调用到这个事件。

注意。目前发现onxmlcomplete和onnewscene在首次调用时会调用两次。也就是执行一次onxmlcomplete,然后执行onnewscene,接着继续执行一次onxmlcomplete,然后执行onnewscene

7 onnewscene

onxmlcomplete,两个是一致的,只是应用层面(仅针对scene标签)相对窄一些。从这个时刻开始载入预览图。

注意。目前发现onxmlcomplete和onnewscene在首次调用时会调用两次。也就是执行一次onxmlcomplete,然后执行onnewscene,接着继续执行一次onxmlcomplete,然后执行onnewscene

8 onpreviewcomplete

预览图载入完毕。

 

html中embedpano中onready属性

可用于设定回调函数获取嵌入完成以及通知krpano viewer准备好全景的应用。

10 onnewpano

按照view标签信息开始载入新的全景图像。

11 onloadcomplete

当前场景的全景图像载入完成。

在 “krpano的各个事件event的先后次序(时间节点)是怎样的?” 上有 3 条评论

发表评论