循序渐进(16)- 谈谈krpano的HTML5和Flash

在谈到krpano的html5和flash之前,您需要先阅读:

循序渐进(6)- 为何本地预览时在浏览器中显示错误

在上面的教程中,简单讲解了在html文件中操作krpano选择何种内核进行浏览的问题,从而避免了本地浏览的黑屏问题。在本次教程中,我们来相对深入地谈谈krpano中关于HTML5和Flash的话题。

 

HTML5和Flash是krpano的全景浏览引擎

全景图无论是切片前或切片后,它本质就是图片文件。krpano要做的事情就是让这些“平面”的全景图在浏览器窗口中呈现出“三维”效果。因此krpano准备两个引擎来完成此事,一个是HTML5,一个是Flash。换句话说,当你看到krpano制作的全景时,它当前所使用的全景浏览引擎可能是HTML5也可能是Flash,使用的哪一套取决于你的设置以及当前浏览器和设备。为什么会有两套引擎呢?最早在2008年时,也正是flash处于顶峰的时代,krpano是以flash作为引擎发布其最初的版本的,当时还没有所谓的智能手机,也不用考虑手机端平板端的事情,krpano只需要考虑在pc端的全景展示效果,flash本身已经发展到自身的登峰造极,在当时,将其作为全景引擎是非常合适的,同时也有很多其它全景软件使用flash编写内核。

即使到现在,flash在pc上的稳定性仍然要比HTML5好。这也是为什么迄今krpano还没有完全放弃flash的原因。事实上,就算是pano2VR也是双引擎的。那么既然flash如此稳定,为什么现在抛弃之声却日渐高涨?原因在于flash不够用了。具体可以看 HTML5 真能代替 Flash 吗? – Adobe Flash – 知乎

flash在全景里也是不够用的。尤其是在移动端,它在苹果手机上无法运行,安卓手机也不会预装flash player。因此可以说移动端基本是不支持flash,再加上诸如VR这些特性flash也么有很好的支持,而这都是当前的热点。因此krpano在很早的时候就注意到这一点,并开始开发html5内核,也就是使用同一批xml文件可在不同的设备上使用不同的内核。在krpano的发展过程中,对html5的优先应用是越来越明显。在1.19 pr3中,是优先默认使用html内核的。

 

如何判断当前浏览器使用的是HTML5还是Flash

既然krpano也就是使用这两个引擎的其中之一,我们遇到的问题也往往需要判断是在HTML5下遇到的问题还是flash下的问题。所以我们要知道在当前浏览器下用的是哪个内核。在移动端包括手机和平板基本上是百分一百都是使用html5内核了。这里说的是pc端(不包括mac电脑)。因为pc端上面的浏览器种类繁多,而且本地时又有各种安全限制,因此并不能单从浏览器本身来确定krpano会调用哪个内核。有两个方法查看:

一 单击鼠标右键,如果右键中出现flash字样,则当前使用的是flash内核;如右键中出现的是HTML5字样,则使用的是H5内核。

二 点击键盘上的O键,会弹出信息窗口,如下图,判断方法类似于第一个方法。

QQ图片20160329145646

QQ图片20160329150120

 

如何“手动”控制krpano使用哪一个引擎

实际上这就是循序渐进(6)的内容,

我们可以在html文件中找到embedpano这个方法

 

注意里面有个html5元素,其数值是prefer,具体在1.18之后还有个flash的元素

html5:”auto”
  • 设置 krpano HTML5 Viewer 使用方法:
  • 可用的数值:
    • auto – 默认设置 – 自动使用krpano HTML5 viewer。
      在设置下,在桌面系统上默认使用krpano Flash viewer。只有在Flashplayer不可用或在移动/平板设备时使用krpano HTML5 viewer。
    • prefer – 可能的话优先使用krpano HTML5。
      在设置下,默认使用krpano HTML5 viewer,只有在系统/浏览器不兼容HTML5时使用krpano Flash viewer。
    • fallback – 可能的话优先使用krpano Flash viewer。只有Flash无法使用时退回到krpano HTML5 viewer。
    • only – 只使用krpano HTML5 viewer – 从不使用krpano Flash viewer。
      在该设置下,只要可能就使用krpano HTML5 viewer。当系统/浏览器不兼容HTML5时,则显示错误信息。
    • always – 始终使用krpano HTML5 viewer,无论系统/浏览器是否支持。 警告 – 该设置只能用于内部测试!
    • never – 从不使用krpano HTML5 viewer,强制使用krpano Flash viewer。
  • 针对HTML5 viewer的扩展设置:(测试用)
    • html5设置可加上 ‘webgl’‘css3d’ 用于当两种渲染技术都可用时优先使用哪一种。
    • 使用示例: html5=”auto+css3d”, html5=”prefer+webgl”, …
    • 默认为当可用时优先使用WebGL。

flash:””
  • 设置krpano Flash Viewer用法。
  • 这与html5设置基本相同,只是刚好相反。可以用于更佳的路径,例如使用 flash=prefer代替 html5=fallback。
  • flash设置后,它将映射到html5设置,并且对其覆写。
  • 可用的数值:
    • 不设置 – 使用html5设置。
    • auto – 与 html5=auto相同。
    • prefer – 当可能的话,优先使用krpano Flash viewer。
      只有当没有Flashplayer或系统/浏览器不支持HTML5时,使用krpano HTML5 Viewer。
      该设置将被映射到 html5=fallback
    • fallback – 当可能的话,优先使用krpano HTML5 viewer。只有当HTML5不可用时,退回使用krpano Flash viewer。
      该设置将被映射到  html5=prefer
    • only – 只使用krpano Flash viewer – 从不使用krpano HTML5 viewer。
      早设置下,如果可能的话使用krpano Flash viewer。如果没有Flashplayer,则显示错误信息。 
      该设置将被映射到 html5=never
    • never – 从不使用krpano Flash viewer,仅使用krpano HTML5 viewer。
      该设置将被映射到  html5=only

krpano 1.19新增了三目运算符,因此也可以这样写:

本地的时候document.domain是没有的,因此html5赋值为auto,放到网上时有了域名,因此html5赋值为prefer。

 

krpano的插件也有HTML5和Flash

除了xml写的插件,大部分插件为了兼容HTML5和Flash,也要有对应的不同版本的HTML5和flash的插件。例如视频播放插件videoplayer,就有swf版本和js版本。通常在1.19可以这样调用

而在1.19以下,则是这样写:

上述的用法也可以用在像layer和hotspot这样需要指定的url的元素中。