进阶教程(9)- 添加组合框combobox

combobox是krpano一个非常常见的组件,它是我们在网页常见的组合框,你可以利用组合框来实现场景导航或者功能分类、缩略图分组等功能。在官网案例有一个自动添加所有场景到一个combobox的案例,不过这个案例没有和cofu skin结合,本次课程我们就是把combobox和默认漫游ui结合。

首先,combobox的位置是examples/virtual-tours/scenes-with-combobox/

在线预览地址(手机可看,为HTML5样式)是

http://www.krpano.com/examples/117/examples/virtual-tours/scenes-with-combobox/scenes-with-combobox.html

在我们来看源代码是怎么一回事之前,你要确保你的plugins文件夹已经有了combobox.js和combobox.swf,

  1. <krpano
    onstart="loadscene(0);">
  2. <!--
    combobox 插件 -->
  3. <plugin
    name="box"
    keep="true"
  4. url="%SWFPATH%/plugins/combobox.swf"
  5. alturl="%SWFPATH%/plugins/combobox.js"
    native="false"
  6. align="leftbottom"
    x="10"
    y="10"
  7. onloaded="fill_with_scenes();"
  8. />
  9. <!--
    自动填充combobox的一个action -->
  10. <action
    name="fill_with_scenes">
  11. for(set(i,0), i LT scene.count, inc(i),
  12. txtadd(itemcall, ‘loadscene(‘,get(scene[get(i)].name),‘,null,MERGE,BLEND(1));‘);
  13. addIdItem(get(scene[get(i)].name), get(scene[get(i)].title), get(itemcall));
  14. );
  15. </action>
  16. <!--场景改变时更新combobox中场景名称的action
    -->
  17. <action
    name="select_box_item">
  18. if(plugin[box].loaded,
  19. plugin[box].selectIdItem(%1);
  20. ,
  21. delayedcall(0.1, select_box_item(%1));
  22. );
  23. </action>
  24. <!--
    热点的style-->
  25. <style
    name="hotspotstyle"
    scale="0.6"
    zoom="true"
    alpha="0.3"
    onover="tween(alpha,1);tween(scale,1);"
    onout="tween(alpha,0.3);tween(scale,0.6);"
    ondown="onover();"
    onup="onout();"
    />
  26. <!--
    场景,在onstart时执行select_box_item -->
  27. <scene
    name="scene1"
    title="Scene
    1"
    onstart="select_box_item(scene1);">
  28. <view
    hlookat="-15"
    vlookat="-10"
    fov="90"
    />
  29. <preview
    url="pano1.jpg"
    />
  30. <image>
  31. <cubestrip
    url="pano1.jpg"
    />
  32. </image>
  33. <hotspot
    name="spot2"
    style="hotspotstyle"
    url="spot2.png"
    ath="-42"
    atv="-12"
    onclick="looktohotspot(spot2);
    loadscene(scene2, null, MERGE, BLEND(1));"
    />
  34. </scene>
  35. <scene
    name="scene2"
    title="Scene
    2"
    onstart="select_box_item(scene2);">
  36. <view
    hlookat="-110"
    vlookat="8"
    fov="100"
    />
  37. <preview
    url="pano2.jpg"
    />
  38. <image>
  39. <cubestrip
    url="pano2.jpg"
    />
  40. </image>
  41. <hotspot
    name="spot1"
    style="hotspotstyle"
    url="spot1.png"
    ath="165"
    atv="0"
    onclick="looktohotspot(spot1);
    loadscene(scene1, null, MERGE, BLEND(1));"
    />
  42. <hotspot
    name="spot3"
    style="hotspotstyle"
    url="spot3.png"
    ath="265"
    atv="0"
    onclick="looktohotspot(spot3);
    loadscene(scene3, null, MERGE, BLEND(1));"
    />
  43. </scene>
  44. <scene
    name="scene3"
    title="Scene
    3"
    onstart="select_box_item(scene3);">
  45. <view
    hlookat="-174"
    vlookat="5"
    fov="75"
    />
  46. <preview
    url="pano3.jpg"
    />
  47. <image>
  48. <cubestrip
    url="pano3.jpg"
    />
  49. </image>
  50. <hotspot
    name="spot3"
    style="hotspotstyle"
    url="spot2.png"
    ath="0"
    atv="0"
    onclick="looktohotspot(spot3);
    loadscene(scene2, null, MERGE, BLEND(1));"
    />
  51. </scene>
  52. </krpano>

虽说这个看着很自动化,实际上在我看来在更新combobox的时候需要手动填写第一个参数名,也就是场景名字这一点,还是挺笨的,你如果想得到的话,可以用我之前在自定义地图改造所用过的方法,利用select_box_item(get(scene[get(xml.scene)].name))
,这样就不用每次都要改一下了。当然你可以将get(scene[get(xml.scene)].name)放在action里写,以免onstart看得太臃肿。这样就是onstart=“select_box_item()”,把下面的代码拷贝到我们的tour.xml,这样在我们的左上角就会出现一个场景的组合框。

  1. <!--
    combobox 插件 -->
  2. <plugin
    name="box"
    keep="true"
  3. url="%SWFPATH%/plugins/combobox.swf"
  4. alturl="%SWFPATH%/plugins/combobox.js"
    native="false"
  5. align="lefttop"
    x="10"
    y="10"
  6. onloaded="fill_with_scenes();"
  7. />
  8. <!--
    自动填充combobox的一个action -->
  9. <action
    name="fill_with_scenes">
  10. for(set(i,0), i LT scene.count, inc(i),
  11. txtadd(itemcall, ‘loadscene(‘,get(scene[get(i)].name),‘,null,MERGE,BLEND(1));‘);
  12. addIdItem(get(scene[get(i)].name), get(scene[get(i)].title), get(itemcall));
  13. );
  14. </action>
  15. <!--场景改变时更新combobox中场景名称的action
    -->
  16. <action
    name="select_box_item">
  17. if(plugin[box].loaded,
  18. plugin[box].selectIdItem(get(scene[get(xml.scene)].name));
  19. ,
  20. delayedcall(0.1, select_box_item(get(scene[get(xml.scene)].name)));
  21. );
  22. </action>
时间: 2024-08-29 19:05:13

进阶教程(9)- 添加组合框combobox的相关文章

VC/MFC 工具栏上动态添加组合框等控件的方法

引言 工具条作为大多数标准的Windows应用程序的一个重要组成部分,使其成为促进人机界面友好的一个重要工具.通过工具条极大方便了用户对程序的操作,但是在由Microsoft Visual C++开发环境所创建的应用程序框架中的工具条只是一个简单的按钮的集合,在功能上也仅仅是起到了菜单快捷方式的作用,而没有做到象VC.Word等软件的工具条那样,提供多种不同类型的标准控件如组合框.编辑框等.尤其是组合框在添加到工具条上后,可将原本需要在弹出对话框中完成的交互操作在工具条上就可以进行,从而在很大程

JQuery Easy Ui 可装载组合框 - ComboBox

可装载组合框 - ComboBox 继承自$.fn.combo.defaults,通过$.fn.combobox.defaults覆盖默认值 combobox显示的是一个可以编辑的文本框和一个下拉列表.允许用户从里面选择一个或者是多个值,用户可以直接输入值到列表顶部,或者可以从列表选择一个或多个现有值. Dependencies combo 使用方法(Usage Example) 从<select>元素和一个预定义结构创建combobox. <select id="cc&quo

通过编写串口助手工具学习MFC过程&mdash;&mdash;(四)添加ComboBox组合框

通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个串口助手再次熟悉一下MFC,并做了一下记录,以便方便以后查阅.做的过程中多是遇到问题直接百度和谷歌搜索来的,所以很多都是不求甚解,知其然不知其所以然.另外做此工具只是为了熟悉了解,许多功能还没有完善!(开发工具VS2008) (四)添加ComboBox组合框 ComboBox组合框有编辑框和下拉列表

表单(上)EasyUI Form 表单、EasyUI Validatebox 验证框、EasyUI Combobox 组合框、EasyUI Combo 组合、EasyUI Combotree 组合树

EasyUI Form 表单 通过 $.fn.form.defaults 重写默认的 defaults. 表单(form)提供多种方法来执行带有表单字段的动作,比如 ajax 提交.加载.清除,等等.当提交表单时,调用 'validate' 方法来检查表单是否有效. 用法 创建一个简单的 HTML 表单.构建表单并给 id.action.method 赋值. <form id="ff" method="post"> <div> <lab

【转】VS2010/MFC编程入门之二十五(常用控件:组合框控件Combo Box)

原文网址:http://www.jizhuomi.com/software/189.html 上一节鸡啄米讲了列表框控件ListBox的使用,本节主要讲解组合框控件Combo Box.组合框同样相当常见,例如,在Windows系统的控制面板上设置语言或位置时,有很多选项,用来进行选择的控件就是组合框控件.它为我们的日常操作提供了很多方便. 组合框控件简介 组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框.下拉式(Dropdown)组合框和下拉列表式(Dro

组合框控件 -- CComboBox

组合框控件 -- CComboBox 组合框其实就是把一个编辑框和一个列表框组合到了一起,分为三种:简易(Simple)组合框.下拉式(Dropdown)组合框和下拉列表式(Drop List)组合框.Properties面板中设置type属性.在动态创建时,BOOL Create( DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID ); 在 dwStyle中添加CBS_DROPDOWNLIST参数即可.其显示效果分别为: 常

下拉列表框和组合框

组合框被操作时会向父窗口发送通知消息,这些通知消息及其含义如下: CBN_CLOSEUP:组合框的列表框组件被关闭,简易组合框不会发送该通知消息 CBN_DBLCLK:用户在某列表项上双击鼠标,只有简易组合框才会发送该通知消息 CBN_DROPDOWN:组合框的列表框组件下拉,简易式组合框不会发送该通知消息 CBN_EDITUPDATE:在编辑框准备显示改变了的正文时发送该消息,下拉列表式组合框不会发送该消息 CBN_EDITCHANGE:编辑框的内容被用户改变了,与CBN_EDITUPDATE

组合框里添加复选框的方法(使用勾选的假象,用图片代替而已,并非QT原生支持)

组合框可以看作是列表框和文本框的组合,因其占据的空间少,使用操作方便,常被界面设计人员用于界面开发设计中,在有限个输入的条件下,组合框常用来代替文本框,这样从用户使用角度来看,更趋人性化,所见即所得.然好的控件永远敢不上应用的步伐,有时常规控件并不能满足应用的需要,经常需要在现有的控件上做扩展.有些应用需要在组合框的列表框的每一项前加复选框,以便可以控制列表框每一项的状态(选中还是未选中),显然现有的组合框(列表框+文本框的组合)不能满足应用要求.那么怎么得到一个超强组合框(列表框+文本框+复选

jQuery EasyUI 表单插件 - Combobox 组合框

扩展自 $.fn.combo.defaults.通过 $.fn.combobox.defaults 重写默认的 defaults. 组合框(combobox)显示一个可编辑的文本框和下拉列表,用户可以从下拉列表中选择一个或多个值.用户可以直接输入文本到列表的顶部,或者从列表中选择一个或多个现成的值. 依赖 combo 用法 从带有预定义结构的 <select> 元素创建组合框(combobox). <select id="cc" class="easyui-