krpano 实现小行星加载完成再显示所有的热点

https://blog.csdn.net/weixin_39644462/article/details/105257965

刚接触krpano,发现这个神奇的玩意,做全景图开发的工具。不过这几年也是不温不火。不过感觉还是挺新奇。

刚好遇到了一些问题,比如,默认皮肤的情况下,使用小行星在加载的时候就会出现各个热点,这样子并不好看。

接下来实现小行星加载完成再显示所有的热点。说明一下,我的krpano版本是1.19 pr16的。

其他方法可以参考肥宗的文档。》》http://www.krpano360.com/little-planet/
(我的也是参考他的)
 

首先在tour.xml文件skin_settings里设置littleplanetintro为true(开启小行星还在模式)

littleplanetintro="true"

然后在skin目录下vtourskin.xml文件里找到skin_setup_littleplanetintro

 
  1. <action name="skin_setup_littleplanetintro" scope="local">

  2. set(global.lpinfo,

  3. scene=get(xml.scene),

  4. hlookat=get(view.hlookat),

  5. vlookat=get(view.vlookat),

  6. fov=get(view.fov),

  7. fovmax=get(view.fovmax),

  8. limitview=get(view.limitview)

  9. );

  10. set(view,

  11. fovmax=170,

  12. limitview=lookto,

  13. vlookatmin=90,

  14. vlookatmax=90

  15. );

  16. lookat(calc(lp_hlookat - 180), 90, 150, 1, 0, 0);

  17. set(events[lp_events].onloadcomplete,

  18. delayedcall(0.5,

  19. if(lpinfo.scene === xml.scene,

  20. set(control.usercontrol, off);

  21. set(view,

  22. limitview=get(lpinfo.limitview),

  23. vlookatmin=null,

  24. view.vlookatmax=null

  25. );

  26. tween(

  27. view.hlookat|view.vlookat|view.fov|view.distortion,

  28. calc('' + lpinfo.hlookat + '|' + lpinfo.vlookat + '|' + lpinfo.fov + '|' + 0.0),

  29. 3.0, easeOutQuad,

  30. set(control.usercontrol, all);

  31. tween(view.fovmax, get(lpinfo.fovmax));

  32. skin_deeplinking_update_url();

  33. delete(global.lpinfo);

  34. );

  35. ,

  36. delete(global.lpinfo);

  37. );

  38. );

  39. );

  40. </action>

将这里修改为如下

 
  1. <action name="skin_setup_littleplanetintro" scope="local">

  2. set(global.lpinfo,

  3. scene=get(xml.scene),

  4. hlookat=get(view.hlookat),

  5. vlookat=get(view.vlookat),

  6. fov=get(view.fov),

  7. fovmax=get(view.fovmax),

  8. limitview=get(view.limitview)

  9. );

  10. set(view,

  11. fovmax=170,

  12. limitview=lookto,

  13. vlookatmin=90,

  14. vlookatmax=90

  15. );

  16.  
  17. <!-- 新增 -->

  18. set_hotspot_visible(false);

  19. set(layer[skin_layer],visible=false,alpha=0);

  20. set(layer[skin_control_bar],visible=false,alpha=0);

  21. set(layer[skin_splitter_bottom],visible=false,alpha=0);

  22.  
  23.  
  24. lookat(calc(lp_hlookat - 180), 90, 150, 1, 0, 0);

  25. set(events[lp_events].onloadcomplete,

  26. delayedcall(0.5,

  27. if(lpinfo.scene === xml.scene,

  28. set(control.usercontrol, off);

  29. set(view,

  30. limitview=get(lpinfo.limitview),

  31. vlookatmin=null,

  32. view.vlookatmax=null

  33. );

  34. tween(

  35. view.hlookat|view.vlookat|view.fov|view.distortion,

  36. calc('' + lpinfo.hlookat + '|' + lpinfo.vlookat + '|' + lpinfo.fov + '|' + 0.0),

  37. 3.0, easeOutQuad,

  38. set(control.usercontrol, all);

  39. tween(view.fovmax, get(lpinfo.fovmax));

  40.  
  41. <!-- 新增 -->

  42. set_hotspot_visible(true);

  43. set(layer[skin_layer].visible,true);tween(layer[skin_layer].alpha,1,1);

  44. set(layer[skin_control_bar].visible,true);tween(layer[skin_control_bar].alpha,1,1);

  45. set(layer[skin_splitter_bottom].visible,true);tween(layer[skin_splitter_bottom].alpha,1,1);

  46.  
  47.  
  48. skin_deeplinking_update_url();

  49. delete(global.lpinfo);

  50. );

  51. ,

  52. delete(global.lpinfo);

  53. );

  54. );

  55. );

  56. </action>

  57.  
  58. <!-- 自定义小行星加载完成前隐藏热点 -->

  59. <action name="set_hotspot_visible">

  60. for(set(i,0),i LT hotspot.count,inc(i),

  61. if(%1 == false,

  62. if(hotspot[get(i)].visible == true,

  63. set(hotspot[get(i)].mark,true);set(hotspot[get(i)].visible,%1);

  64. );

  65. ,

  66. if(hotspot[get(i)].mark == true OR hotspot[get(i)].mark2 == true,

  67. set(hotspot[get(i)].visible,%1);

  68. );

  69. );

  70. );

  71. </action>

这里外加了一个set_hotspot_visible的action元素,用来循环查找hotspot并设置其属性visible为false。然后在skin_setup_littleplanetintro加载小行星之前传false隐藏热点,然后在加载完小行星后再传true显示热点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值