krpano 1.19 pr10用法
第一步
如果是静态代码的热点,需要加上normal属性,设置为false,如
1 |
<hotspot name="spot1" style="skin_hotspotstyle" normal="false" ath="4.658" atv="10.599" linkedscene="scene_R0010048" onloaded="add_all_the_time_tooltip_for_VR"/> |
如果是动态代码创建的热点,需要以下设置,
1 2 3 4 5 6 7 8 9 10 |
set(hotspot[get(tooltipname)].normal,false); set(hotspot[get(tooltipname)].onloaded, if(webvr.isenabled, set(visible,false); , if(lp_running == false OR lp_running == null, set(visible,true); ); ); ); |
方括号里是你的动态设置的热点的name,这里只是一个例子,关键是要设置normal属性为false,另外要给热点的onloaded事件加上
1 2 3 4 5 6 7 |
if(webvr.isenabled, set(visible,false); , if(lp_running == false OR lp_running == null OR lp_running === null , set(visible,true); ); ); |
第二步
在scene标签外加上
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<events name="normalhs" keep="true" onnewscene="normalhs_VR()"/> <action name="normalhs_VR"> for(set(i,0), i LT hotspot.count, inc(i), if(hotspot[get(i)].normal == false , if(webvr.isenabled, set(hotspot[get(i)].visible, false); , if(lp_running == false OR lp_running === null OR lp_running == null, set(hotspot[get(i)].visible, true); ); ); ); ); </action> |
第三步
找到VR插件代码,如果是默认皮肤则在vtourskin.xml中,如
1 2 3 4 5 6 7 8 9 10 11 |
<plugin name="WebVR" keep="true" devices="html5" pluginurl="%SWFPATH%/plugins/webvr.js" url="" multireslock.desktop="true" multireslock.mobile.or.tablet="false" mobilevr_support="true" mobilevr_fake_support="true" onavailable="removelayer(webvr_enterbutton); skin_arrange_buttons(); webvr_onavailable();" onentervr="skin_showloading(false); webvr_onentervr(); webvr_setup(); skin_reloadscene_webvr();" onexitvr="webvr_onexitvr(); webvr_setup(); skin_reloadscene_webvr();" /> |
我们留意高亮部分,onentervr和onexitvr这两个分别是进入VR和退出VR的时间,因此我们要把normalhs_VR()加到onentervr事件的最前面以及onexitvr事件的最后面。
如下
1 2 3 4 5 6 7 8 9 10 11 |
<plugin name="WebVR" keep="true" devices="html5" pluginurl="%SWFPATH%/plugins/webvr.js" url="" multireslock.desktop="true" multireslock.mobile.or.tablet="false" mobilevr_support="true" mobilevr_fake_support="true" onavailable="removelayer(webvr_enterbutton); skin_arrange_buttons(); webvr_onavailable();" onentervr="normalhs_VR();skin_showloading(false); webvr_onentervr(); webvr_setup(); skin_reloadscene_webvr();" onexitvr="webvr_onexitvr(); webvr_setup(); skin_reloadscene_webvr();normalhs_VR();" /> |
代码与小行星相关,请使用移花接木(16)- krpano 1.19实现小行星开场的代码
krpano 1.19 pr9之前用法
截至krpano 1.19 pr5,在VR中支持的热点只有distorted为true的图像热点,这些图像热点可能是链接到其它场景,或者是弹出图片,如果是后者的话,在VR中是有问题的,我们希望在VR下,这些用途为弹出图片的热点不要显示,只在正常模式下显示。
我们有下面两种用途的热点:
1 2 3 |
<hotspot name="spot2" style="skin_hotspotstyle" ath="42.657" atv="24.198" linkedscene="scene_02mt" /> <hotspot name="spot3" style="hotspotstyle|normalhs" ath="22.657" atv="14.198" onclick="openpic()" /> |
spot2是用于链接到其它scene里的,而spot3是弹出图片的。我们给spot3加了一个style为normalhs,如下。在这个例子中,所有不想在VR中显示的但distorted为true的图像热点,我们都加上这个设置:
1 |
<style name="normalhs" normal="false" onloaded="if(webvr.isenabled,set(visible,false),set(visible,true));" /> |
注意,如果所加的热点本身有onloaded。例如,
1 |
<hotspot name="spot3" style="hotspotstyle" ath="22.657" atv="14.198" onclick="openpic()" onloaded="otheraction();" /> |
这样的话,需要把normalhs单独写出来。写成
1 |
<hotspot name="spot3" style="hotspotstyle" ath="22.657" atv="14.198" onclick="openpic()" normal="false" onloaded="if(webvr.isenabled,set(visible,false),set(visible,true));otheraction();" /> |
然后tour.xml加入下面代码,在scene外,上面style元素也一样是放在scene外面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<action name="normalhs_enterVR"> for(set(i,0), i LT hotspot.count, inc(i), if(hotspot[get(i)].normal == false , set(hotspot[get(i)].visible, false); ); ); </action> <action name="normalhs_exitVR"> for(set(i,0), i LT hotspot.count, inc(i), if(hotspot[get(i)].normal == false , set(hotspot[get(i)].visible, true); ); ); </action> |
这两段action就是控制进入VR和退出VR是控制那些含有normal属性且数值为false的热点的显示和隐藏。我们在代码中使用了循环,然后对属性进行了判断,然后设置其visible。
另外在tour.xml加入下面代码(一定要在第三行include代码的后面写,这样才能覆盖掉vtourskin里面的webvr插件设定),将normalhs_enterVR和normalhs_exitVR的调用分别加入到onentervr和onexitvr两个事件当中。
1 2 3 4 5 6 7 8 9 10 11 |
<plugin name="WebVR" keep="true" devices="html5" pluginurl="%SWFPATH%/plugins/webvr.js" url="" multireslock.desktop="true" multireslock.mobile.or.tablet="false" mobilevr_support="true" mobilevr_fake_support="true" onavailable="removelayer(webvr_enterbutton); skin_arrange_buttons(); webvr_onavailable();" onentervr="normalhs_enterVR();skin_showloading(false); webvr_onentervr(); webvr_setup(); skin_reloadscene_webvr();" onexitvr="webvr_onexitvr(); webvr_setup(); skin_reloadscene_webvr();normalhs_exitVR();" /> |