krpano 1.20.11 (生成 2022-03-07)

krpano Actions参考

krpano 有一个小而简单的动态脚本语言.与它 krpano 可以在许多方面被定制.命令或函数在 krpano 中称为 "动作".有可能使用现有的action, 也可以定义新的动作.脚本语言是动态的, 默认情况下是非类型化的, 只有一些预定义的变量被键入, 但通常不相关, 因为脚本内部所有类型转换都将自动完成.

关于此文档

本文档讲述的是全局 krpano 变量和Object, 有关调用语法的action以及所有预定义的 krpano action/函数.

文档主题:
有关静态 xml 代码和Object属性的文档, 可以查看以下内容:
krpano XML 参考

krpano 全局变量参考

版本/生成信息 屏幕信息/设置 设备信息 鼠标/键盘 定时/随机值 数学常量 键盘/按钮移动 多分辨率信息 加载信息 XML/场景 编程/调试/错误处理

krpano action/函数参考

编程逻辑/流控制 数学运算符和函数 编号/String格式 动画/动画值更改 其他帕诺斯/旅游动态加载 查看动画/照相机控件 自动旋转 坐标转换 文本可视化 查看/全景更新 动态添加或删除屏幕元素 layer/plugin/hotspot 相关函数 Javascript 接口 调试

语法和用法

krpano action/函数的调用约定:
actionname(parameters); ...
  • 其中 actionname 可以是:
    • 生成 krpano action的名称或...
    • 在 xml 中的任何位置定义的 < action >元素的名称..
    • 包含 krpano action代码或链接到 Actionscript3 (Flash) 或 Javascript (HTML5) 函数的 krpano 变量/属性的名称.
  • 空白字符 (如空格,制表符,新行) 将被忽略, 因为它们不在引号内 (单个或双引号字符).
  • 如果有多个action调用, 则调用应以分号结束.
  • action调用将按顺序依次处理.
  • 可以或应该传递给该action的参数取决于特定的action本身.请参阅此action的文档以了解更多.
  • 传递多个参数时, 需要用逗号分隔参数.
  • 所有参数都将在作为文本写入action时传递.当参数是变量时, 只会传递变量的名称, 而不是变量的值! 若要传递变量的值, 需要使用 get(变量)函数.
    注意-有些action会自动地将变量解析为它们的值, 但这取决于特定的action本身!
  • 若要能够在参数值内使用空白字符和逗号, 参数必须由单个 '或双引号括起来. ".


表达式

逻辑或数学表达式/条件在 krpano 中的语法:
if检查中, 表达式语法将在条件循环 ( for, loop) 和 calc函数中使用.它可用于评估逻辑条件,计算数学表达式或串联String.

基本语法是:
a OPERATOR b
  • 其中 a 或 b 术语可以是变量,值或String.
  • action员可以是下面列出的运算符之一.
  • 解析顺序取决于运算符, 但 withhin 等效运算符的解析顺序是从左向右.
  • 对自定义解析顺序使用圆括号/嵌套-例如:
    (a OPERATOR b) OPERATOR (c OPERATOR d)
  • 文本运算符喜欢和或或只支持大写符号!

比较运算符:
== 等于 ( 非严格 )
!= 不等于 ( 非严格 )
< LT 小于 *
> GT 大于 *
<= LE 小于或等于 *
>= GE 大于或等于 *
=== 相等 ( 严格 )
!== 不相等 ( 严格 )
逻辑运算符:
|| OR 左边或右边的表达式需要是true实的 *
&& AND 左边和右边的表达式需要是true实的 *
! 非运算符-反转Boolean变量
三元运算符:
if ? then: else 三元运算符
嵌套运算符:
( ... ) 嵌套运算符
数学运算符:
+ 加-数字相加或连接String
-
*
/
^ 指数
二进制运算符:
<< LSHT 左移位 *
>> RSHT 右移位 *
BOR 按位或
BAND 按位和
XOR 按位异或

严格/非严格的比较

当使用 非严格比较时 (使用 ==!=严格模式设置为 false 时), 则假定给定值为变量或String.这意味着当具有给定名称的变量存在时, 将在比较中使用该变量的值.但是, 当变量不存在时, 给定的名称将用作String.
严格比较中, String必须用引号显式标记.变量将解析为它们的值, 或者如果它们不存在, 则为 null.


* 注意-由于 xml 语法的限制, 字符 <,>,&的用法可能是不可能的 (例如, 在 xml 属性内或没有 CDATA 标记的 xml 元素内).因此, 建议使用替代语法.



数组

数组
基本原则:
  • 每个具有 name特性的 xml 元素都是数组的元素/项.
  • xml 元素的名称是数组的名称, name 属性定义数组元素/项的名称.
  • krpano 中的数组始终是Object数组.
  • 此类数组项Object可以包含任何类型的自定义属性/属性.
  • 可以通过设置数组项值在运行时动态地预定义或定义数组, 在第一次设置项值时, 会自动创建一个数组.

静态 xml 语法: (当在 XML 结构中定义时)
<array_name name="item_name" value="..." />

动态action语法: (在运行时访问或设置时)
array_name[item_name].value

数组Object的属性和action:
  • count
    • 获取数组中当前项的数目.
    • 可以通过将 count设置为0来清除数组.
  • sortby (属性, 参数 *)
    • 按给定的 属性的值对所有数组项进行排序.
    • 默认情况下, 排序顺序将取决于属性的类型 (例如, "数值与String" 排序).
    • 参数 (可选)-可以包含以下一个或多个值的String (例如, 由管道 |字符分隔):
      • caseinsensitive -不区分大小写的String排序.
      • descending-使用降序排序顺序.
      • numeric-将值解析为数字并相应进行排序.
  • createarrayitem (名称或索引)
    • 创建/添加新的数组项.
  • removearrayitem (名称或索引)
    • 删除数组项.
    • 移除项目后的项目将分级/向上移动.

数组项Object的默认属性:
  • index
    • 当前数组项的基于0的索引 (只读).
  • name
    • 当前数组项的名称.
    • 还可以通过将数组项的名称设置为 null来删除它.

值数组
不同对正常 krpano 阵列也有这些特别价值数组:
  • 值数组是具有整数索引和值的简单数组.
  • 通过 def(test, array)可以动态创建值数组.
  • 通过 array[index]可以访问项目.
  • 数组中的当前项数可以通过 array.lenght .
  • 值数组仅在action代码中可用.
  • 内部这些是来自 Javascript (HTML5) 或 Actionscript 3 (Flash) 的本机数组.在这两种情况下, 它们的用法是相同的.


全局变量

所有默认的内置全局 krpano 变量:
变量名 类型 默认值
global
local
Object
Object
globalObject允许直接访问全局变量范围.
本地或layer/hotspot作用域代码中, 如果具有同名的变量已经定义了当前作用域, 则可以使用全局变量.

本地Object仅在 local范围action中可用, 并且允许直接访问当前的局部变量范围.这可用于确保在可能存在具有相同名称的全局变量时, 在局部范围内定义新变量.
变量名 (只读) 类型 默认值
version String "1.19-pr14"
krpano 版本信息.
变量名 (只读) 类型 默认值
xmlversion String
xml 的 版本设置.
如果未设置, 这将与 krpano 版本String相同.
变量名 (只读) 类型 默认值
build String "2017-12-01"
krpano 生成日期String的格式为 "年月日".
变量名 (只读) 类型 默认值
mouse.x
mouse.y
mouse.stagex
mouse.stagey
mouse.downx
mouse.downy
mouse.clickx
mouse.clicky
int
int
int
int
int
int
int
int
鼠标位置.

mouse.xmouse.y坐标相对于 area的左上边缘.

stagexmouse.stagey坐标相对于整个舞台/屏幕/窗口的左上边缘.

downxmouse.downy变量存储上次按下鼠标按钮的位置 (对于左右按钮).坐标本身相对于 area的左上边缘 .

clickxmouse.clicky变量是特殊情况下的, 它们存储从 onsingleclickondoubleclick事件发生的位置.坐标本身相对于 区域的左上边缘 .
变量名 (只读) 类型 默认值
keycode int 0
最后按下或释放的键的不符.

不符值将在 onkeydownonkeyup事件中设置.

这里有一个小代码段来查找按下的键的不符:
<events onkeydown="showlog(); trace('keycode=',keycode);" />
变量名 (只读) 类型 默认值
wheeldelta
wheeldelta_raw
wheeldelta_touchscale
int
int
int
0
Number.NaN
0.0
鼠标滚轮旋转的辊三角洲.

这些变量将在 onmousewheel事件中设置.

  • wheeldelta
    • 轮子辊三角洲作为规范化的价值.
    • 通常在大多数系统上为 +3 或-3.
  • wheeldelta_raw
    • 鼠标滚轮旋转的 "原始" 不成比例和非圆角增量值.正常的 wheeldelta值被限制为整数值, 对于某些用法 (插件) 可能太不准确.
    • 注意-在 krpano Flash播放器中, 原始值仅在使用 默认 krpano 嵌入脚本且仅在窗口模式 (不是全屏模式) 时可用.在 krpano HTML5 播放器中, 原始值始终可用.
  • wheeldelta_touchscale
    • 在触摸设备上没有鼠标滚轮, 但 onmousewheel事件也将被称为2手指缩放笔势.
    • wheeldelta_touchscale变量将提供有关相对触摸缩放/缩放的详细信息.
    • 注意-只在触摸设备上可用!
      在其他设备上, 值将始终为0.0.
变量名 类型 默认值
fullscreen Boolean false
fullscreen变量可用于检查或更改全屏模式的当前状态.当变量将被更改时, 全屏模式也将被更改.

示例-切换到全屏模式:
onclick="set(fullscreen,true);"
示例-在全屏和窗口模式之间切换:
onclick="toggle(fullscreen);"

提示:
  • 在使用全屏设置之前, 如果当前的浏览器/设备实际上支持全屏模式, 则应进行验证.可以使用 xml fullscreensupport设备设置和 device.fullscreensupport变量来完成此action.
  • 由于 Flashplayer 和 HTML5 安全限制, 切换到全屏模式只能作为对用户输入的反应, 如鼠标单击或 keypress! 这意味着它只可能切换到全屏模式在一个 onclick 或 onkeydown 事件!
  • 当浏览器不支持 HTML5 全屏模式(如 iOS) 时, 全屏设置将只更改播放器 html 元素的大小以匹配整个浏览器窗口的大小.由于技术上的限制, 这将无法从 < iframe > 中工作, 在嵌套的 html 结构中可能存在问题.
  • 尝试在 < iframe >中使用 HTML5 全屏模式时, 必须将 allowfullscreen参数 (及其非标准浏览器版本) 添加到 < iframe >声明中.这告诉浏览器允许此 iframe 切换到全屏模式.

    例如:
    <iframe ...allowfullscreen="true" mozallowfullscreen="true" webkitallowfullscreen="true"></iframe>
变量名 (只读) 类型 默认值
stagewidth
stageheight
int
int
当前播放器窗口的大小 (以像素为单位).
onresize事件中获取这些大小.
变量名 (仅 HTML5) 类型 默认值
stagescale Number 1.0
全局总体缩放设置.
stagescale 设置将缩放所有 krpano 元素和大小.

通过缩放所有元素, krpano 阶段大小 (屏幕大小/分辨率) 本身将由这个值反向缩放-例如, 值0.5 将将所有元素缩小 50%, 同时将内部阶段大小增加200%.

默认的 stagescale 值取决于设备,浏览器,Javascript 窗口.devicePixelRatio值.在台式机和平板浏览器上, 默认值通常为 1.0, 通常为0.5.

这意味着手机上的元素通常是桌面或平板电脑的一半大小.若要禁用该行为 (例如实现某些自定义响应布局), 可将此代码添加到第一个 xml 中:
<action name="mobilescale" autorun="preinit" devices="mobile">
mul(stagescale,2);
</action>
变量名 (只读) 类型 默认值
browser.useragent
browser.platform
browser.location
browser.domain
browser.protocol
String
String
String
String
String
有关浏览器的信息.
flash 提示-在 flash 播放器中, 这些信息仅在使用 krpano 嵌入脚本时才可用.直接嵌入 swf 文件时, 这些信息不可用.
变量名 (只读) 类型 默认值
device.Flash
device.flashversion
device.html5
device.desktop
device.normal
device.tablet
device.mobile
device.handheld
device.css3d
device.webgl
device.multiressupport
device.panovideosupport
device.fullscreensupport
device.pixelratio
device.fractionalscaling
device.mouse
device.touch
device.ios
device.iosversion
device.iphone
device.ipod
device.ipad
device.android
device.androidversion
device.androidstock
device.chrome
device.chromemobile
device.chromeversion
device.firefox
device.firefoxversion
device.ie
device.ieversion
device.edge
device.safari
device.safariversion
device.opera
device.operaversion
device.standalone
device.windows
device.mac
device.linux
Boolean
int
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
Boolean
int
Boolean
Boolean
Boolean
Boolean
int
Boolean
Boolean
Boolean
Boolean
int
Boolean
Boolean
Boolean
int
Boolean
int
Boolean
int
Boolean
Boolean
int
Boolean
int
Boolean
Boolean
Boolean
Boolean
false

false
false
false
false
false
false
false
false
false
false
false
1.0
false
false
false
false

false
false
false
false

false
false
false

false

false

false
false

false

false
false
false
false
设备Object提供有关当前设备/系统的信息.它的动态/脚本等效于 xml 设备属性 .
可以随时通过脚本代码 (例如 if () action)检查 设备Object的属性/属性.

设备Object具有以下属性:
  • flash -仅在 krpano Flash播放器中为 true
  • flashversion -版本的 Flashplayer
  • html5 -仅在 krpano HTML5 播放器中为 true
  • desktop-仅在桌面上为 true
  • normal-仅在桌面和平板电脑上 (与移动设备相反) 为 true
  • tablet -仅适用于片剂
  • mobile-仅在手机上为 true
  • handheld式-仅适用于手机和平板电脑 (与桌面相反)
  • 注意-桌面,移动和平板电脑都是 ' 三态 ' 设置, 它们不能同时设置, 只有一个可以设置为 true.
  • css3d -当 CSS-3D-Transforms 可用时为 true (仅限 HTML5)
  • webgl -当 webgl 可用时为 true (仅限 HTML5)
  • multiressupport -当浏览器能够 multires 时 true
  • panovideosupport -当浏览器能够进行全景视频时 true
  • fullscreensupport -仅当全屏模式支持时才为 true
  • pixelratio -设备/浏览器的 pixelratio
  • fractionalscaling -当设置小数页缩放或 pixelratio 时为 true
  • mouse-仅在具有鼠标支持的设备上为 true
  • touch-仅在具有多点触摸支持的设备上才正确
  • 注意-当设备同时支持 (例如带有触摸屏的桌面设备) 时, 可以同时设置鼠标和触摸.
  • ios -仅适用于 ios 设备 (iPhone,iPod,iPad)
  • iosversion -设备的 iOS 版本 (iPhone,iPad,iPod)
  • iphone -只有在 iphone 上 (和 iPod 触摸) 才是true的
  • ipod -仅在 ipod 触摸时才正确
  • ipad -仅适用于 ipad
  • android -仅适用于 android 设备
  • androidversion -Android 版本 (仅 HTML5)
  • androidstock -仅在 "股票" (= 基于 web 视图的) Android 浏览器中为 true
  • chrome -仅在 chrome 浏览器中为 true (仅限 HTML5)
  • chromemobile -仅在移动 Chrome 浏览器中为 true (仅限 HTML5)
  • chromeversion -版本的 Chrome 浏览器 (仅限 HTML5)
  • firefox -仅在 firefox 浏览器中为 true (仅限 HTML5)
  • firefoxversion -版本的火狐浏览器 (仅 HTML5)
  • ie -仅在 Internet 资源管理器浏览器中为 true (仅限 HTML5)
  • ieversion -版本的 Internet 资源管理器浏览器 (仅 HTML5)
  • edge-仅在 Microsoft 边缘浏览器中为 true (仅限 HTML5)
  • safari -仅在 safari 浏览器中为 true (仅 HTML5)
  • safariversion -Safari 浏览器的版本 (仅 HTML5)
  • opera -仅在 (基于 HTML5 的) opera 浏览器中为 true (仅适用于)
  • operaversion -版本的 Opera 浏览器 (仅 HTML5)
  • standalone-仅在独立 Flashplayer 中为 true
  • windows -仅在 windows 系统上为 true
  • mac -仅在 mac OSX 系统上为 true
  • linux -仅适用于 linux 系统

例子
if(device.html5, ...);
if(device.flash, ...);
if(device.android, if(device.flash, ...); );
if(device.iOSversion GT 5.1, ...);
变量名 (只读) 类型 默认值
timertick int
timertick变量返回自播放器启动以来已经过的毫秒数 (1000 毫秒 = 1 秒).
变量名 (只读) 类型 默认值
random Number 0.0-1.0
random变量在范围0.0 到1.0 中返回一个随机数.

示例-如何在范围 1-10 中获取整数随机值:
mul(val, random, 9);
add(val, 1);
roundval(val);
trace('random value=',val);
变量名 类型 默认值
hlookat_moveforce
vlookat_moveforce
fov_moveforce
int
int
int
0.0
0.0
0.0
这些变量可用于设置移动视图/全景的力.
他们的主要用途是键盘或按钮移动控制.

当将它们设置为0.0 以外的值时, 视图将开始缓慢加速 (由 keybaccelerate控制), 然后以最大速度移动 (由 控制.keybspeed控制), 直到它们被设置回 0.0, 然后 移动将减慢 (由 keybfriction 控制. ).
变量名 (只读) 类型 默认值
multireslevel int
multireslevel变量返回当前的多分辨率级别
(0-image.level.count).
变量名 类型 默认值
lockmultireslevel String -1
将自动多分辨率级别选择锁定到固定级别.
将 lockmultireslevel 设置为 "当前" 以将级别锁定到当前级别.要释放水平锁定集 lockmultireslevel 回到 "-1".
变量名 类型 默认值
downloadlockedlevel Boolean false
如果设置为 true, 则将完全下载当前锁定的级别.
变量名 类型 默认值
progress.progress Number 0.0
当前加载进度为线性值, 从0.0 到1.0.

它可用于创建自定义加载动画-例如, 使用 onxmlcomplete事件启动加载动画, 以及 onloadcomplete事件以停止它.
变量名 类型 默认值
network.viewerpath
network.htmlpath
network.firstxmlpath
network.currentxmlpath
String
String
String
String
到多个位置的路径 (仅限路径, 不带文件名):
  • viewerpath -krpano 播放器文件的路径.
  • htmlpath -指向 html 文件的路径.
  • firstxmlpath -第一个加载的 xml 文件的路径.
  • currentxmlpath -指向当前 xml 文件的路径.
如果路径是绝对路径, 则取决于在嵌入和浏览器和 Flashplayer 环境中使用的路径.
变量名 (只读) 类型 默认值
xml.url String
xml.url变量包含当前加载的 xml 文件的路径/url.
变量名 (只读) 类型 默认值
xml.content String
xml.content变量包含当前加载的 xml 文件的整个内容作为String.在使用 loadscene ()函数加载 < scene >之后, xml.content变量将只包含 < scene >元素的内容.
变量名 (只读) 类型 默认值
xml.scene String
xml.scene变量包含当前加载的场景的名称.
变量名 (只读) 类型 默认值
xml.view Object
在当前 xml 或场景中定义的初始 < view >元素中的值的备份.例如, 通过 xml.view.hlookat获取初始 view hlookat值 .

注意-只有 xml 中定义的值存储在此处, 没有默认值.这意味着在使用该Object的值之前, 必须检查这些变量是否实际存在-例如通过 if (xml.fov = = null,. ...
变量名 (只读) 类型 默认值
lasterror String
当发生错误时, lasterror变量包含最后一条错误消息.若要获取此变量, 必须使用 onloaderror事件.
变量名 (只读) 类型 默认值
haveexternalinterface Boolean true
此变量可用于检查 Flashplayer 的外部接口是否可用.此接口对于 Javascript 接口openurl函数是必需的.
在服务器上联机该外部接口始终可用, 但仅在本地时才会在浏览器内打开 flash 文件, 当 flash swf 的文件夹位于 "受信任的文件夹" 中时.可在 Flashplayer 安全设置中质量管理受信任的文件夹, 请参阅此处了解更多 detatils- 本地/脱机使用情况 .
变量名 (只读) 类型 默认值
havenetworkaccess Boolean true
此变量可用于检查网络访问是否在 Flashplayer 中可用.这可以用来避免错误时, 试图使用像谷歌地图或 Bing 地图插件本地, 因为这些插件试图从网络加载数据, 所以需要网络访问.
在服务器上联机网络访问始终可用, 但仅当Flash swf 的文件夹位于 "受信任的文件夹" 中时才在本地.可在 Flashplayer 安全设置中质量管理受信任的文件夹, 请参阅此处了解更多 detatils- 本地/脱机使用情况 .


detailsactions

def(variable, type, value*)
使用特定的 type定义新的 variable, 并可选择将其设置为给定的 value .

如果没有给定 value , 并且 variable已经存在着, 则具有其当前值的变量将转换为给定的类型 .

参数:
  • variable
    • 变量名.
    • 变量不存在时将被创建.
  • type
    • 变量的类型.
    • 可用类型:
      • Boolean-true 或 false
      • Number-一个数值
      • Integerint -整数值
      • String -文本字符
      • Object -具有自定义属性的Object
      • array - 值数组
  • value (可选)
    • 此变量的新值.
    • 当不给出值且变量已经存在着时, 具有其当前值的变量将转换为给定类型.
    • 当没有给定值且变量不存在着时, 将使用默认值: Boolean = false,数字 = NaN (不是数字),integer=0,String = null.
    • 当类型为Object或数组时, 不能设置任何值.
例子
def(b, boolean, true);
def(n, number, 123.456);
def(s, string, 'text');
def(obj, object);
def(obj.x, number, 0.0);
def(obj.y, number, 0.0);
set(variable, value)
set(object, variable:type=value, variable:type=value, ...)
variable设置为 value .

set () action是两种调用/使用可能性:
  • 使用 两个参数调用时:
    • 这是一个值的一组普通变量.
  • 使用 三或更多参数调用时:
    • 这是一次多组的多个变量.
    • 这里的变量将被设置或添加到一个Object.
    • 还可以选择指定变量的类型.

参数:
  • object (可选-对于三个或更多参数调用)
    • 多个 set 调用的Object-在此Object中将设置变量.
    • Object不存在时, 将创建它.
    • 若要在特定范围内定义变量, 可以在此处使用 globallocal对象.
  • variable
    • 变量名.
    • 变量不存在时将被创建.
  • type (可选-对于三个或更多参数调用)
    • 变量的类型.
    • 可用类型:
      • Boolean-true 或 false
      • Number-一个数值
      • integerint -整数值
      • string -文本字符
  • value
    • 此变量的新值.
    • 当变量已经存在时, 该值将转换为该变量的类型 (当未定义显式类型时).
    • 注意-若要获取其他变量的值, 请使用 get (变量)calc (表达式)函数.
例子
正常设置:
set(var1, 'hello');
set(var2, get(var1));
set(fullscreen, true);
set(layer[p1].visible, false);
set(hotspot[h1].scale, 2.5);
set(contextmenu.item[0].caption, 'hello item');
set(events.onxmlcomplete, null);
多组:
set(layer[p1], visible=false, alpha=0.5);
set(hotspot[hs1],
type='text',
ath=0.0,
atv=0.0,
html='Test Text',
css='text-align:center',
bg=false
);
set(global,
test='Test text',
havesomething:boolean=true,
var2:string=get(var1),
value:number=calc(1 + 2*3)
);
action( get(variable), ...)
array[ get(variable) ]
<xmlelement attribute="get:variable" .../>
variable解析为其值.

get (var)函数是一种特殊action, 在调用其他action或访问数组元素时只能用作参数.

参数:
  • variable
    • 任何变量.
    • 当变量不存在时, get() 将返回 null.

注意-某些action会自动尝试将其给定的参数解析为它们的值.对于这些action, 使用 "get" (var) 是不必要的.
例子
set(dstvar, get(srcvar));
looktohotspot(get(name));
lookto(get(h), get(v), get(f));
showtext(get(msg));
tween(var,get(dstval));
set(pic, spot1);
set(hotspot[get(pic)].visible, false);
trace('xyz=', xyz, ' get(xyz)=', get(xyz));
txtadd(msg, 'fov=', get(view.fov));
calc(variable, expression)
action( calc(expression), ...)
array[ calc(expression) ]
<xmlelement attribute="calc:expression" .../>
计算/计算/解析 表达式的值.

calc (表达式)函数是一种特殊action, 它只能在调用其他action时或访问数组元素时用作参数.

参数:
  • variable
    • 将存储结果的变量.
    • 变量不存在时将被创建.
  • expression
例子
set(y_new, calc(y_old - offset1 + offset2));
set(animationtime, calc('%1' == 'instant' ? 0.0 : 0.5));
<layer url="calc:'%CURRENTXML%/skin/' + settings.image1" />
copy(destination, source, typeconversion*)
"复制 ()" action将内容从一个变量复制到另一项.

默认情况下, 这与以下内容相同: 设置(目标, get(源)) .

参数:
  • destination
    • 目标变量.
    • 当变量不存在时, 它将被创建.
  • source
    • 源变量.
    • 当变量不存在时, null 将设置为目标变量.
  • typeconversion (可选)
    • 如果设置为 true (默认值):
      当两个变量都有不同的类型时, 源变量的值将转换为目标变量的类型.
    • 当设置为 false时:
      将源变量的值 和类型复制到目标变量.
例子
copy(dstvar, srcvar);
copy(cur_hlookat, view.hlookat);
copy(layer[text].x, mouse.x);
copy(layer[text].y, mouse.y);
delete(variable, ...)
删除并删除给定的变量.

参数:
  • variable
    • 任何变量名称.
    • 可以一次删除多个变量, 只需传递几个变量名称 (用逗号分隔).
例子
set(tmp1, ...);
set(tmp2, ...);
...do something ...
delete(tmp1, tmp2);
2或3参数调用:
if(condition, then-actions, else-actions*)
4个或更多参数调用:
if(
condition, then-actions,
else-if-condition, then-actions,
else-if-condition, then-actions,
...
else-actions
)
if () action允许有条件地执行代码.

参数:
  • condition
  • then-actions
    • 当条件的计算为 true 时将执行的action.
  • else-actions (可选)
    • 当条件的计算为 false 时将执行的action.
例子
if(fullscreen, fullscreensetup(), windowsetup() );
if(fullscreen, set(layer[controls].visible, false) );
if(i LT 10, loop(next) );
if(var === null, set(var,0));
if(hotspot[spot1] === null, trace(there is no spot1 hotspot));
if((varA GT 5) AND (varA LT 10),
trace('varA is between 5 and 10')
);
if(varA AND varB AND varC, trace('all vars are true') );
if(var1 GT var2,
trace('condition is true');
lookto(100,20,50);
,
trace('condition is false');
lookto(0,0,100);
);
if(a*2+b GT (c+3)*1.5 OR teststring == '123', ...);
if(
test == 1, trace('test is 1'),
test == 2, trace('test is 2'),
test == 3, trace('test is 3'),
trace('test is someting else')
);
delayedcall(delay, actions)
delayedcall(id, delay, actions)
在给定时间后调用/执行给定的action.

参数:
  • id (可选)
    • delayedcall 的可选唯一 id.
    • 此 id 可用于通过调用 stopdelayedcall (id)来停止 delayedcall.
  • delay
    • 执行action之前等待的秒数.
  • actions
    • 延迟后要调用的action.
例子
delayedcall(5.0, hidelogo() );
delayedcall(10, looktohotspot(spot1);loadpano(pano2.xml); );
delayedcall(1, showtext('hello');       );
delayedcall(4, showtext('to the pano'); );
<action name="updatemousepos">
copy(layer[cursor].x, mouse.x);
copy(layer[cursor].y, mouse.y);
delayedcall(0.02, updatemousepos() );
</action>
stopdelayedcall(id)
使用给定 id 停止 delayedcall .

参数:
  • id
    • 应停止的 delayedcall 的 id.
例子
<events name="introimage_events"
onnewpano="delayedcall(introimage, 5.0, hide_introimage() );"
onremovepano="stopdelayedcall(introimage);"
/>
nexttick(actions)
在下一个处理刻度中调用/执行给定的action-这意味着在当前action之后, 但应尽快.

参数:
  • actions
    • 要调用的action.
callwhen(condition, actions)
当条件为 true 或将变为 true 时调用给定的action.
如果当前条件不正确, 则 callwhen () action将等待很长时间, 直到条件变为 true.

参数:
  • condition
    • 逻辑 表达式 .
    • callwhen () action将不断检查此条件, 直到它变为 true.
  • condition
    • 条件为 true 时要调用的action.
例子
callwhen(plugin[video].loaded, plugin[video].playvideo(...); );
callwhen(plugin[maps].loaded, plugin[maps].setcenter(...); );
for(startactions, condition, nextactions, loopactions)
for 循环.

首先将调用 startactions , 然后检查 condition, 当它为 true 时, 将调用 loopactions , 然后 nextactions , 然后开始检查 condition和循环 再次.

参数:
  • startactions
    • 将在 for 循环开始之前调用/执行的action.
  • condition
  • nextactions
    • 将在一个循环之后 (loopaction 之后) 调用/执行的action.
  • loopactions
    • 只要条件为 true, 将重复调用/执行的action.
例子
for(set(i,0), i LT 10, inc(i), trace('i=',i) );.
for(set(i,0), i LT layer.count, inc(i),
trace('layer[',i,'].name=',layer[get(i)].name);
);
loop(condition, loopactions)
asyncloop(condition, loopactions, doneactions*)
只要 condition为 true, 就会重复调用 loopactions .

当循环本身完成时, 正常循环 () action将继续执行以下action.asyncloop () 将继续 intermediately, 并执行以下action, 并在每个框架中运行 loopactions一次.当异步循环最终完成时, 将调用 doneactions .

参数:
  • condition
  • loopactions
    • 只要条件为 true, 将重复调用/执行的action.
  • doneactions (可选, 仅 asyncloop)
    • 当条件变为 false 且循环停止时将调用的action.
例子
ondown="asyncloop(pressed, layer[scrollarea].scrollby(+2,0) );"
onover="asyncloop(hovering, updatemousepos(), hideinfo() );"
asyncloop(true, framehandler() );
setinterval(id, delay, actions)
clearinterval(id)
通过它们之间的 delay时间间隔反复调用/执行给定的action.

参数:
  • id (可选)
  • delay
    • 在action调用之间等待的秒数.
    • 当使用0作为延迟时, 每个帧都将调用这些action.
  • actions
    • 调用每个 delay秒的action.
例子
setinterval(time, 1.0,
jsget(time, (new Date()).toLocaleTimeString(); );
trace('time=',time);
);
<events onkeydown="setinterval(get(keycode), 0.1, trace(keycode); );"
onkeyup="clearinterval(get(keycode));"
/>
toggle(variable)
toggle函数在 true 和 false 之间切换给定 (Boolean) 变量的值.

参数:
  • variable
    • 应切换的Boolean变量.
例子
toggle(fullscreen);
toggle(layer[button1].visible);
switch(variable)
switch(variable, value1, value2, ...)
switch action在多个状态之间切换给定变量的值.每次切换action被调用时, 该值都将被切换/更改.

当只有不带值参数的变量本身时, 变量才会在 true 和 false 之间切换.

当有两个或多个给定为参数的值时, 变量将切换到所有这些值 (从左向右).

参数:
  • variable
    • 应切换/更改的变量.
  • value1, value2,... (可选)
    • 此变量的切换通过值.
例子
switch(fullscreen);
switch(layer[button1].visible);
switch(layer[button1].alpha, 1.0, 0.5);
switch(layer[child].parent, button1, button2, button3);
switch(destpos, -100, 0, +100); tween(y,get(destpos));
break()
  • 中断/停止当前action调用的执行.
  • 当在 for ()循环 ()循环中使用时, 只会停止循环本身.
callwith(caller, actions)
调用 krpano action代码, 方法是使用特定的plugin/layer或热点元素作为调用方.这可用于直接属性访问或模拟这些元素上的事件调用.

参数:
  • caller
    • 应用作调用方的元素.
    • 可以只是一个 < plugin >/< layer > 或 < hotspot > 元素.
  • actions
    • 任何 krpano action代码.
    • 代码将在调用方的 "上下文" 中执行, 这意味着 "直接" 访问其属性.
例子
callwith(layer[test], onclick);
callwith(layer[test], trace('test pos=',x,'/',y); );
callwith(layer[test], tween(alpha, 0.0); );
scope(scope, actions)
在特定范围内调用 krpano action代码.

参数:
  • scope
    • action代码的作用域.
    • 可用范围:
      • global
      • local
      • localonly
      • parent
      • private:NAME
      有关范围的详细信息: action scope .
  • actions
    • 任何 krpano action代码.
例子
scope(localonly, for(set(i,0), i LT 10, inc(i), trace(i)); );
scope(private:myplugin, trace(plugin_internal_var); );
parentscopeset(variable, value)
variable设置为 value (如 set () 调用) , 但在父action的范围内.
这可用于将内部局部范围action的结果返回/传递给外部.

参数:
  • variable
    • 变量名.
    • 变量不存在时将被创建.
  • value
    • 此变量的新值.
    • 当变量已经存在时, 该值将转换为该变量的类型.
assignstyle(elementname, styles)
将属性从一个或多个 < style >元素复制到自定义元素.

参数:
  • elementname
    • 应将样式属性复制到的元素的名称.
      例如 layer [测试]myelement [name] .
  • style
    • < style >元素的一个或多个名称.
      多个名称需要由 |字符组合起来.
例子
assignstyle(layer[test], 'teststyle');
assignstyle(layer[test], 'style1|style2');
copyattributes(destobject, srcobject)
将所有属性从一个Object复制到另一项.

注意-copyattributes () action的参数需要是Object, 而不是Object的名称/路径! 这意味着可能需要使用 " get() " action来解析名称/路径.

参数:
  • destobject
    • 目标Object-将将属性复制到其中的Object.将覆盖现有属性.
  • srcobject
    • 源Object-该Object的所有属性都将复制到目标Object.
例子
copyattributes(get(layer[test]), get(style[style1]));
events.dispatch(eventname, instantly*)
从所有 < 事件 >元素中分派/调用给定事件.

参数:
  • eventname
    • 事件的名称.
  • instantly (可选)
    • Boolean设置 (true 或 false, 默认为 false).
    • 如果设置为 true, 则会立即调用并执行事件, 当未设置或设置为 false 时, 将在当前action调用之后调用事件.
例子
<events name="events1" myevent="trace(events1...);" />
<events name="events2" myevent="trace(events2...);" />
...
events.dispatch(myevent);
add(variable, valueA, valueB*)
sub(variable, valueA, valueB*)
mul(variable, valueA, valueB*)
div(variable, valueA, valueB*)
mod(variable, valueA, valueB*)
pow(variable, valueA, valueB*)
用于数学计算的action.
这些action可用于2或3参数:

  • 具有2个参数:
    • add (dst,val1) ⇒ dst = dst + val1 (与++类似)
    • sub (dst,val1) ⇒ dst = dst-val1 (与==类似)
    • mul (dst,val1) ⇒ dst = dst * val1 (与*=类似)
    • div (dst, val1) ⇒ dst = dst/val1 (于/=类似)
    • mod (dst, val1) ⇒ dst = dst % val1 (取模)
    • pow (dst, val1) ⇒ dst = dst ^ val1
  • 具有3个参数:
    • add (dst, val1, val2) ⇒ dst = val1 + val2
    • sub (dst, val1, val2) ⇒ dst = val1 - val2
    • mul (dst, val1, val2) ⇒ dst = val1 * val2
    • div (dst, val1, val2) ⇒ dst = val1 / val2
    • mod (dst, val1, val2) ⇒ dst = val1 % val2 (取模)
    • pow (dst, val1, val2) ⇒ dst = val1 ^ val2

注意-val1 和 val2 可以是值或变量.当 val1 或 val2 是一个变量, 那么自动变量的内容将被使用!

参数:
  • variable
    • 将存储计算结果的变量.
    • 当变量不存在时, 它将被创建.
  • valueA / valueB (可选)
    • 计算的值或变量.
例子
set(val, 1);
add(val, 1);
trace('val should be 2: val=',val);
mul(doublewidth, width, 2.0);
mul(scale, 0.5);
div(result, vala, valb);
add(dst,rotate,360); tween(rotate,get(dst),5);
add(xpos, mouse.x, mouse_x_offset);
sub(destx, stagewidth,  destwidth);
div(aspect,16,9);
mod(cur_hlookat,cur_hlookat,360);
pow(sqrt,val,0.5);
inc(variable, byvalue*, max*, min*)
dec(variable, byvalue*, min*, max*)
这些action增加或减少变量 (饱和度或限制).

参数:
  • variable
    • 要增减的变量.
  • byvalue (可选)
    • 按此值增加或减小变量.
    • 如果未设置, 变量将增加或减少1.
  • max / min (可选)
    • 定义最大和最小值.
    • 当达到一个限制时, 该值将被设置回另一个限制值.这可以用来让变量环绕一个定义的范围或剪辑在特定的限制 (最小 = max).

注意- inc() 和 dec() 函数将转换变量类型为 "整数"!
例子
inc(i);
inc(frame,1,get(lastframe),0);
inc(ypos,30);
inc(view.hlookat, 2, 90, 90);
clamp(variable, min, max)
将变量的值限制在给定的最小值和最大数值之间.

参数:
  • variable
    • 要夹紧/限制的变量.
  • min
    • 最小值-当变量的值低于该值时, 它将被设置为此最小值.
  • max
    • 最大值-当变量的值高于该值时, 它将被设置为此最大值.
例子
clamp(percent, 0, 100);
screentolayer(bar, mouse.stagex,mouse.stagey, lx,ly);
div(fill, lx, layer[bar].pixelwidth);
mul(fill, 100);
clamp(fill, 0, 100);
txtadd(layer[barfill].width, get(fill), '%');
Math.*
数学Object为数学计算提供常量和action.

最多的数学action可以通过两种方式调用: 通过传递变量的名称, 然后将变量用作参数, 计算结果将被存储回变量, 或者通过指定一个附加参数来 存储.

roundval(variable, decimalplaces*)
roundval(destinationvariable, variable, decimalplaces)
将变量的值舍入为给定的小数位.

注意-在舍入后, 变量将为内部String!

参数:
  • destinationvariable (可选)
    • 将存储结果的变量.
    • 只有当调用3参数!
  • variable
    • 要舍入的变量.
    • 当使用1或2参数调用时, 结果也将存储在该变量中.
  • decimalplaces (可选)
    • 小数位数-0 时未设置.
例子
roundval(val);
roundval(val, 2);
roundval(hlookat_print, view.hlookat, 2);
copy(cur_hlookat,view.hlookat);
mod(cur_hlookat,360);
roundval(cur_hlookat,2);
copy(cur_vlookat,view.vlookat);
roundval(cur_vlookat,2);
txtadd(msg,'looking at ',get(cur_hlookat),'/',get(cur_vlookat));
tohex(variable, prefix*, length*)
tohex(destinationvariable, variable, prefix, length)
将给定变量的内容转换为十六进制String.
可用于创建 html/css 颜色String.

参数:
  • destinationvariable (可选)
    • 将存储结果的变量.
    • 只有当调用4参数!
  • variable
    • 要转换为十六进制String的变量.
    • 当用少于4个参数调用时, 结果也将存储在该变量中.
  • prefix (可选)
    • String的前缀 (如 "0x" 或 "#").
  • length (可选)
    • 结果的固定长度.
例子
tohex(color,'#',6);
set(color, ...an_external_integer_input...);
tohex(color,'#',6);
txtadd(layer[text1].css,'color:',get(color),';');
tolower(variable)
toupper(variable)
tolower(destinationvariable, sourcevariable)
toupper(destinationvariable, sourcevariable)
将给定变量的内容转换为小写或大写.

参数:
  • destinationvariable (可选)
    • 将存储事例转换结果的变量.
    • 只有当调用2参数!
  • variable/ sourcevariable
    • 要转换为小写或大写的变量.
txtadd(destination, txt1, txt2*, txt3*, ...)
txtadd函数可用于在一起添加/连接多个文本/值.
该action可以与2个或多个参数一起使用.当仅使用两个参数 (目标和文本) 时, 文本将被添加到目标变量的当前值.

参数:
  • destination
    • 将存储连接的文本的目标变量.
    • 变量不存在时将被创建.
  • txt1, txt2, txt3,... (可选)
    • 将连接在一起的文本.
    • 仅使用一个 txt 参数时, 此文本将添加到当前目标变量的内容中.
    • 注意-应使用变量的内容时, 必须使用 " get() " action来解析变量!
例子
txtadd(picfilename,'%CURRENTXML%/pic_',get(pic),'.jpg');
txtadd(crop,'0|',get(ypos),'|333|285');
txtadd(pname, 'thumbbar_image_', get(i));
txtadd(layer[text].html,'[p]',get(data[txt1].content),'[/p]');
txtadd(msg,get(view.fovtype),'=',get(fov),'°');
subtxt(dstvar, srcvar, startpos, len)
subtxt函数将提取其他文本的一部分.

参数:
  • dstvar
    • 将存储提取的文本的目标变量.
    • 变量不存在时将被创建.
  • srcvar
    • 带有源文本的变量或文本.
  • startpos
    • 应从其中提取文本的起始位置.
  • len
    • 要提取的文本的长度.
indexoftxt(index, txt, searchtxt, startindex*)
indexoftxt action提供 ".txt" String中第一个出现 "searchtxt" 值的位置.

参数:
  • index
    • 一个变量, 它将存储 "searchtxt" 的第一个匹配项的索引.
    • 如果 "searchtxt" 从未发生, 则为 -1 .
    • 变量不存在时将被创建.
  • txt
    • 应在其中搜索它的文本.
  • searchtxt
    • 要搜索的文本.
  • startindex (可选)
    • 开始搜索文本的起始 startindex/位置 (默认为 0).
txtreplace(var, searchtext, replacetext)
txtreplace(dstvar, srcvar, searchtext, replacetext)
txtreplace函数在 "var/srcvar" 中搜索 "searchtext" 的所有匹配项, 并用 "replacetext" 替换它们.

参数:
  • var/srcvar/dstvar
    • 要搜索的变量 (var,srcvar) 以及结果将被存储到的位置 (var,dstvar).
    • 变量不存在时将被创建.
  • searchtxt
    • 应搜索的文本.
  • replacetext
    • 将替换 "searchtxt" 事件的文本.
txtsplit(string, separator, resultingarray)
txtsplit(string, separator, var1, var2, ...)
txtsplit函数在 "var/srcvar" 中搜索 "searchtext" 的所有匹配项, 并用 "replacetext" 替换它们.

参数:
  • String
    • 要拆分的String, 可以是文本或变量.
  • separator
    • 分隔字符或字符串.
  • resultingarray (当调用具有3个参数的 txtsplit () action时)
    • 将包含拆分部分作为 "value" 属性的数组变量的名称.
  • var1, var2,... (当调用具有4个或更多参数的 txtsplit () action时)
    • 分片的结果将直接分配给给定的变量.
例子
拆分为不同的变量:
txtsplit('1|2|3', '|', a, b, c);
trace('a=',get(a), ' b=',get(b), ' c=',get(c));
结果:
a=1 b=2 c=3
拆分为一个数组:
txtsplit('x|y|z', '|', arr);
for(set(i,0), i LT arr.count, inc(i),
trace('arr[',get(i),'].value=',arr[get(i)].value);
);
结果:
arr[0].value=x
arr[1].value=y
arr[2].value=z
fromcharcode(var, charcode)
fromcharcode函数将给定的字符代码转换为String并存储在给定的变量中.

参数:
  • var
    • 要存储字符的变量.
    • 变量不存在时将被创建.
  • charcode
    • Unicode 字符代码作为数字.
escape(var)
escape(var, text)
unescape(var)
unescape(var, text)
escapeunescape函数将转义给定变量或给定文本的内容, 然后将结果存储在给定的变量中.

参数:
  • var
    • 没有文本参数-将被转义/转义的变量.
    • 使用文本参数-将存储转义/转义文本的变量.
  • text (可选)
    • 将被转义/转义的文本.
tween(variable, value, time*, tweentype*, donecall*, updatecall*)
补间 action可用于时间控制的动画/变量更改.
该action将动态地将变量的当前值更改为给定值.

颜色支持: 当用包含单词 "颜色" 的名称补间变量时, 这些值将自动解释为 32bit ARGB 颜色, 每个颜色通道将单独处理.

多个变量支持: 可以同时将多个变量一起补间.因此, 指定几个由 |字符分隔的变量,值和 tweentypes.如果指定了多个变量, 但只有一个值和/或只有一个 tweentype, 则所有变量都将补间到相同的值并/或使用相同的 tweentype.对于所有给定的变量, 时间和完成的 updatecalls 将总是相同的.

参数:
  • variable
    • 应更改的变量.
    • 使用 |字符指定多个变量.
    • 当变量名包含单词 "颜色" 时, 将变量值作为 32bit ARGB 颜色值处理.
  • value
    • 此变量的目标值.
    • 补间百分比值时-向值中添加 "%" 字符.
    • 使用 |字符为多个变量指定多个值.
    • 注意-对补间到另一个变量的值, 使用 get()函数来获取另一个变量的值!
  • time (可选)
    • 从当前值更改为目标值 (默认为0.5 秒) 的时间 (以秒为单位).
    • 不必为更改使用固定时间, 就可以定义值的最大移动距离和该距离的时间 (在补间多个变量时不支持).这样可以在很短的距离和很长的一段时间内使用较长的时间.
      这可以通过使用距离函数来完成:
      • distance (maxdistance, maxtime)
        • maxdistance-开始和目标值之间的最大距离
        • maxtime-此最大距离的时间 (以秒为单位)

  • tweentype (可选)
    • 补间/插值类型 (默认情况下为 easeOutQuad).
    • 有关所有可用的补间类型, 请参见: tweentypes .
  • donecall (可选)
    • 在补间完成并达到目标值时应执行的action命令.
    • 而不是正常action, 也可以在此处使用特殊的关键字 " 等待".在这种情况下, 用户界面和执行下列action将被阻止, 直到到达目标值为止.
  • updatecall (可选)
    • 当值更新/更改时, 每次 (= 每个帧) 都将调用这些action!
    • 警告-小心使用! 当 heavly 使用这可以减少帧率!

有关 "补间" 名称的来源的一些信息- 关于补间的维基百科 .
例子
tween(scale,2);
tween(rotate,90);
tween(width,50%);
onover="tween(alpha,0.7,distance(0.3,0.2));"
onout="tween(alpha,1.0,distance(0.3,0.2));"
set(alpha,0);
set(visible,true);
tween(alpha, 1.0 ,0.3);
tween(layer[logo].width, get(destwidth));
set(layer[image].enabled,false);
tween(layer[image].alpha,0.0,0.5,default,removeplugin(image));
set(view.stereographic,true);
tween(view.vlookat, 90.0, 2.0);
tween(view.fisheye, 1.0, 2.0);
tween(view.fov, 150.0, 2.0);
stoptween(variable, ...)
stoptween函数停止当前正在运行的补间action.

参数:
  • variable
    • 当前补间并应停止的变量的名称.
  • ...variable, variable,... (可选)
    • 其它应停止补间的变量.
例子
ondown="tween(layer[text].y, 10, distance(400,0.7), linear);"
onup="stoptween(layer[text].y);"
这里所有支持 补间函数的 补间类型.
线性缓动:
  • linear
Ease Out:
  • easeOutQuad
  • easeOutQuart
  • easeOutQuint
  • easeOutSine
  • easeOutBounce
  • easeOutCirc
  • easeOutCubic
  • easeOutExpo
  • easeOutBack
Ease In:
  • easeInQuad
  • easeInQuart
  • easeInQuint
  • easeInSine
  • easeInBounce
  • easeInCirc
  • easeInCubic
  • easeInExpo
  • easeInBack
Ease Out and In:
  • easeOutInQuad
  • easeOutInQuart   *
  • easeOutInQuint   *
  • easeOutInSine   *
  • easeOutInBounce   *
  • easeOutInCirc   *
  • easeOutInCubic   *
  • easeOutInExpo   *
Ease In and Out:
  • easeInOutQuad   *
  • easeInOutQuart   *
  • easeInOutQuint   *
  • easeInOutSine   *
  • easeInOutBounce   *
  • easeInOutCirc   *
  • easeInOutCubic   *
  • easeInOutExpo   *

这里的一些不同的补间类型的在线可视化:
http://hosted.zeh.com.br/tweener/docs/en-us/misc/transitions.html
http://hosted.zeh.com.br/mctween/animationtypes.html

* 仅通过 moretweentypes 插件
这些补间类型仅在包含 moretweentypes插件时可用.
loadpano(xmlpath, vars*, flags*, blend*)
loadscene(scenename, vars*, flags*, blend*)
loadpanoscene(xmlpath, scenename, vars*, flags*, blend*)
loadxml(xmlstring, vars*, flags*, blend*)
加载新帕诺斯的action.

注意-在加载新的帕诺斯时, 只保留带有 保留= "true" 的layer,plugin,hotspot,event和 lensflare 元素!

参数:
  • xmlpath (对于 loadpano)
    • 要加载的新全景 xml 文件的路径/url (对 none 使用 null ).
    • 当使用相对路径时, 文件将从 basedir文件夹中加载, 默认情况下是%FIRSTXML%.这意味着所有 loadpano 调用中的路径都相对于第一个加载的 xml 文件.
  • xmlstring (对于 loadxml)
    • 作为要加载的String/文本的 xml 文件的内容 (应转义).
  • scenename (对于 loadscene)
  • vars (可选)
    • 要设置的自定义变量 (对 none 使用 null).
    • 这些变量将被设置为 之后解析/解析 xml, 但在开始加载全景映像之前.这样, 可以使用这些变量来覆盖 xml 中的设置或设置附加的值.
    • 变量可以定义为由 & amp分隔的 var1=val1对;.
  • flags (可选)
    • 加载的其它标志 (不使用 null).
    • 可以通过 |字符组合多个标志.
    • 可用标志:
      • MERGE (建议的标志)
        • 合并当前和下一个全景中的所有设置.
        • 如果新全景图中的插件和热点与保留的名称相同, 则不会加载新元素.
        • 这是虚拟游览的推荐设置.
      • KEEPIMAGE -保留当前图像 (仅 HTML5)
      • KEEPVIEW -保持当前视图设置
      • KEEPMOVING -在混合 (仅 HTML5)期间保持移动
      • KEEPSCENES -保持当前场景 (仅限 loadpano)
      • KEEPDISPLAY -保持当前显示设置
      • KEEPCONTROL -保持当前控件设置
      • KEEPPLUGINS -保留当前加载的插件
      • KEEPHOTSPOTS -保留当前加载的热点
      • NOPREVIEW -忽略新 xml 的 < 预览 > 标记
      • KEEPBASE -预定义的组合:
        KEEPDISPLAY | KEEPCONTROL | KEEPPLUGINS
      • KEEPALL -预定义的组合:
        KEEPVIEW | KEEPDISPLAY | KEEPCONTROL | KEEPPLUGINS
      • REMOVESCENES -移除当前定义的所有场景元素 (相同的相似集 (场景.计数, 0);)
      • IGNOREKEEP -忽略保留标志并删除元素的保留 = "true"
      • IMAGEONLY -仅加载图像 (和预览) (仅限 HTML5, 而不是 loadpanoscene)
  • 混合 (可选)
    • 混合/淡出到下一个 panoroma-过渡动画.
    • 可用的混合模式:
      NOBLEND
      没有混合, 只需直接切换到下一个全景 (默认值).

      BLEND(time, tweentype)
      混合/交叉淡出从当前全景到下一个.

      参数:
      • time-以秒为单位的混合时间 (默认值 = 2.0).
      • tweentype -混合曲线/运动形状, 混合动画的类型 (默认值 = easeInCubic)-请参见 tweentypes .

      (WebGL only)COLORBLEND(time, color, tweentype)
      混合到一个颜色, 然后从该颜色到下一个全景.

      参数:
      • time-以秒为单位的混合时间 (默认值 = 2.0).
      • color-介于十六进制格式之间的颜色 (default=0x000000 = 黑色).
      • tweentype -混合曲线/运动形状, 混合动画的类型 (默认值 = easeOutSine)-请参见 tweentypes .

      (WebGL only)LIGHTBLEND(time, color, colorscale, tweentype)
      添加或减去颜色, 然后交叉淡出到下一个全景.

      参数:
      • time-以秒为单位的混合时间 (默认值 = 2.0).
      • color -以十六进制格式添加的颜色 (default=0xFFFFFF = 白色).
      • colorscale -颜色的缩放因子, 使用负值进行减法 (默认值 = 2.0).
      • tweentype -混合曲线/运动形状, 混合动画的类型 (默认值 = easeInCubic)-请参见 tweentypes .

      (WebGL only)SLIDEBLEND(time, angle, smooth, tweentype)
      当前和下一个全景图之间的幻灯片动画.

      参数:
      • time-以秒为单位的混合时间 (默认值 = 2.0).
      • angle-以度数表示的幻灯片的角度/方向 (默认值 = 0.0).
      • smooth-转换行的平滑/模糊 (0.0 到 1.0, 默认为 0.2).
      • tweentype -混合曲线/运动形状, 混合动画的类型 (默认为线性)-请参见 tweentypes .

      (WebGL only)OPENBLEND(time, shape, smooth, zoom, tweentype)
      当前和下一个全景图之间的打开动画.

      参数:
      • time-以秒为单位的混合时间 (默认值 = 2.0).
      • shape -定义打开形状的因子 (-1.0 到 + 1.0)-0.0 = 圆开口,-1.0 = 垂直开口, + 1.0 = 水平开口 (默认值 = 0.0).
      • smooth-转换行的平滑/模糊 (0.0 到 1.0, 默认为 0.2).
      • zoom-另外缩小旧全景 (0.0 到 1.0, 默认值 = 0.0).
      • tweentype -混合曲线/运动形状, 混合动画的类型 (默认为线性)-请参见 tweentypes .

      (Flash or WebGL only)ZOOMBLEND(time, zoom, tweentype)
      缩放到当前视图并跨淡出到下一个全景.

      参数:
      • time-以秒为单位的混合时间 (默认值 = 2.0).
      • zoom-缩放因子 (默认值 = 2.0).
      • tweentype -混合曲线/运动形状, 混合动画的类型 (默认值 = easeInOutSine)-请参见 tweentypes .

      演示: 全景混合演示(源代码: 混合演示.xml )

      注意-当选择的混合模式不受支持时 (例如, 当使用 "仅 WebGL" 模式时, 只有 Flash 或 CSS3D 可用), 则它将自动回退到默认混合模式.
例子
loadpano(pano2.xml);
loadpano(pano2.xml, null, MERGE, BLEND(1));
loadscene(scene1);
loadscene(scene1, null, MERGE, BLEND(1));
loadxml('<krpano><image><sphere url="pano.jpg"/></image></krpano>');
loadxml(get(data[xml].content), null, KEEPALL);
loadpano('%SWFPATH%/pano.xml', null, MERGE, BLEND(2));
loadpano(sphere.xml, image.hfov=1.0&view.limitview=fullrange);
openurl(url, target*)
打开一个 url/链接.

参数:
  • url
    • 要打开的 url.
  • target (可选)
    • 应在其中打开 url 的目标.
    • 可能的设置:
      • _blank -在新窗口中打开 url (默认值)
      • _self -在当前窗口中打开当前帧中的 url
      • _parent -在当前框架的父级中打开 url
      • _top -在当前窗口的顶层框架中打开 url

Flash 提示-此action需要 Flashplayer 的外部接口.只有在浏览器中运行时才可用.在使用 "文件://" url 脱机/本地工作时, 需要调整 Flashplayer 的 安全设置.
例子
openurl('https://krpano.com',_self);
openurl('help.html');
lookat(h, v, fov*, distortion*, architectural*, pannini*)
看看这个全景位置.

参数:
  • h
    • 以度数 (-180 到 + 180) 为单位的球面坐标系中的水平方向 ( view.hlookat).
  • v
    • 以度数 (-90 到 + 90) 为单位的球面坐标系中的垂直方向 ( view.vlookat).
  • fov (可选)
    • 以度数 (0-179) 为单位的视图字段 ( view.fov).
  • distortion (可选)
  • architectural (可选)
  • pannini (可选)
例子
lookat(0,0);
lookat(0,0,90);
loadpano(pano.xml);
lookat(45.1, -20.2, 110.0);
lookto(toH,toV,fov*,motiontype*,shortestway*,nonblocking*,donecall*)
looktohotspot(hotspotname*, fov*, motiontype*, shortestway*)
moveto(toH, toV, motiontype*)
zoomto(fov, motiontype*)
将视图从当前查找位置移动到给定位置.

注意-在移动过程中, 用户界面和所有其他action都被阻止.这意味着下一action将在当前action完成时执行. oninterrupt函数可用于使这些action中断用户的能力.

参数:
  • toh
    • 水平目标寻找方向 (-180 到 + 180, 环绕可能).
  • tov
    • 垂直目标寻找方向 (-90 到 + 90).
  • hotspotname (对于 looktohotspot, 可选)
    • 热点的名称.
    • 这将使用热点位置 (复兴/亚视) 作为目的地位置.
    • 如果没有定义名称, 将从热点元素调用 looktohotspot (), 则将使用该热点本身.
  • fov (可选)
    • 目标 fov (0 到 179).
    • 当未设置 fov 时, looktohotspot函数将自动将热点的大小用作目标 fov.其他action在未设置时保留当前 fov.
  • motiontype (可选)
    • 运动的类型.
    • 可能的设置:
      • 线性 (速度) -线性运动
        • 速度 = 移动速度 (以度/秒为单位)
      • 平滑 (加速,break,maxspeed) -加速平滑移动 (= 默认值)
        • 加速 = 加速度在程度/second² (default=720)
        • 断裂 = 负加速度在度/second² (default=-720)
        • maxspeed = 最大移动速度 (以度/秒为单位) (default=720)
      • 补间 (tweentype,时间) -补间动画曲线
        • tweentype = 补间类型之一
        • 时间 = 移动的时间 (以秒为单位)
  • shortestway (可选)
    • 使用最短可能的方式从当前到目标位置.
    • 可能的设置: truefalse (默认为 true).
  • nonblocking (可选, 仅 lookto)
    • 如果设置为 true, 则 lookto action将不会等待完成移动, 然后继续执行下列action.用户界面也不会被阻止.
    • 当 lookto 移动完成后, 将调用 donecall函数 (定义时).
  • donecall (可选, 仅 lookto, 仅当阻止为 true 时)
    • nonblocking lookto 移动完成时, 将调用此action.
例子
moveto(100.0,5,linear(10));
zoomto(130,smooth());
lookto(33,-22,30,smooth(100,50,20));
looktohotspot(hotspot1);
looktohotspot(hotspot2, 40);
looktohotspot(hotspot3, 25, smooth(100,50,20));
looktohotspot(get(name));
adjusthlookat(desthlookat)
调整手动补间的 view.hlookat值.
它修复了360环绕, 以最短的方式 desthlookat .

参数:
  • desthlookat
    • 预定的目标 hlookat 值.
    • desthlookat是变量的名称时, 会自动使用该变量的值.
    • 当前的 view hlookat变量将被调整 (不更改当前视图), 使其与此值相邻.
例子
adjusthlookat(140);
tween(view.hlookat, 140);
getlooktodistance(result, toH, toV, fromH*, fromV*)
获取 fromH / fromV和/运气 lookto 点之间的球面距离 (以度为单位). 结果将总是在0.0 和180.0 之间 (超过180度距离是不可能的在球形).

参数:
  • result
    • 将存储距离值的变量的名称.
    • 变量不存在时将被创建.
  • toh
    • 水平前瞻位置 (-180 到 + 180, 环绕可能).
    • 可以是变量名或值.
  • toV
    • 垂直查找位置 (-90 到 + 90).
    • 可以是变量名或值.
  • fromH (可选)
    • 水平看-从位置 (-180 到 + 180, 环绕可能).
    • 可以是变量名或值.
    • 如果未定义, 则默认情况下将使用当前的水平查找方向 ( view.hlookat).
  • fromV (可选)
    • 垂直看-从位置 (-90 到 + 90).
    • 可以是变量名或值.
    • 如果未定义, 则默认情况下将使用当前的垂直查找方向 ( "view.vlookat").
stoplookto()
停止非阻塞 lookto/looktohotspot/moveto/zoomto action.

stopmovements()
立即停止所有用户驱动 (通过鼠标, 键盘或触摸) 平移和缩放动作.

wait(parameter)
等待数秒或等待事件.

注意-在等待期间, 用户界面和所有后续action都将被阻止.这意味着当前调用中的下一个action将在当前等待action完成时执行. oninterrupt函数可用于使用户可中断此action.

参数:
  • 参数
    • 任意数字-此action将在几秒钟内等待的时间
    • LOAD-等待加载完成
    • BLEND-等待加载和混合完成
例子
oninterrupt(actions)
在启动一组action (如 lookto,looktohotspot,moveto,zoomto,等待和补间等 donecall) 时, 可以使用此action来阻止用户界面.
如果这些action中的任何一个将被用户中断 (例如通过单击), 那么这些action将被停止, 并且在 oninterrupt函数定义的 action中执行.

参数:
  • actions
    • 要在用户中断时调用的action命令.
    • 另外有一个特殊的命令可能在这里:
      break-这只会破坏当前的action.
例子
oninterrupt(break);
lookto(150,30,70);
wait(3);
lookto(242,0,150);
lookto(280,-10,50);
wait(3);
oninterrupt( trace(user interrupt); );
lookto(0,0,90);
lookto(90,0,90);
lookto(180,0,90);
lookto(270,0,90);
lookto(0,0,90);
screentosphere(x,y, h,v)
spheretoscreen(h,v, x,y, stereoside*)
用于在屏幕和球面坐标之间进行转换的action.

screentosphere函数将将 x-y变量转换为 h/v变量, spheretoscreen函数 x++ 变量到 x/y变量.

参数:
  • x / y
    • 从左上边缘的像素中具有屏幕坐标的变量.
  • h / v
    • 具有球面坐标的变量 (360x180).
  • stereoside (可选)
      对于立体声渲染-定义坐标应该映射到哪个屏幕边.可能的设置: l为左侧或 r右侧或未为正常非立体声屏幕坐标设置/未定义.
提示:
  • x,y,h,v 参数必须是变量名称, 使用值是不可能的!
  • 当变量不存在时, 它将被创建.
例子
screentosphere(mouse.x, mouse.y, toh, tov);
screentolayer(layer, screenx,screeny, layerx,layery)
layertoscreen(layer, layerx,layery, screenx,screeny)
用于在屏幕/舞台和相对 < layer >坐标之间进行转换的action.

参数:
  • layer
  • screenx / screenx
    • 具有屏幕/舞台坐标的变量, 从左上边缘的像素.
  • layerx / layery
    • 从左上层边缘的层坐标的变量.
提示:
  • 屏幕/舞台坐标基于 krpano 坐标系 (从左上0/0 到右下角 stagewidth / stageheight ).
  • 当启用 scalechildren时, 将缩放图层坐标.
  • 不支持旋转图层!
  • 所有参数都必须是变量, 使用值是不可能的!
  • 当变量不存在时, 它将被创建.
例子
screentolayer(bar, mouse.stagex,mouse.stagey, lx,ly);
div(fill, lx, layer[bar].pixelwidth);
mul(fill, 100);
clamp(fill, 0, 100);
txtadd(layer[barfill].width, get(fill), '%');
remapfovtype(fov, srcfovtype, dstfovtype)
remapfovtype(fov, srcfovtype, dstfovtype, width, height)
将一个 fov 值从一个 fovtype重新映射到另一个.

当更改查看 fovtype 并同时重新映射查看 fov 时, 结果全景缩放将保持不变.

参数:
  • fov
    • 一个应更改的 fov 值的变量.
    • 结果将存储在同一变量中.
  • srcfovtype
    • 当前的 fovtype .
    • 可: HFOV,VFOV,DFOV 或 MFOV.
  • dstfovtype
    • 新的 fovtype .
    • 可: HFOV,VFOV,DFOV 或 MFOV.
  • width (可选)
    • fov 区域/帧的宽度 (以像素为单位).
    • 默认情况下, 将使用当前屏幕/区域大小.
  • height (可选)
    • fov 区域/框架的高度 (以像素为单位).
    • 默认情况下, 将使用当前屏幕/区域大小.
例子
set(view.fovtype, HFOV);
set(view.fov, 90);
...
set(view.fovtype, VFOV);
remapfovtype(view.fov, HFOV, VFOV);
showtext(text, textstyle*)
已否决-请改用新的和扩展的 showtext插件!
这一工作基本相同, 但它适用于 Flash 和 HTML5.

updateobject(updateall*, updatefov*)
更新/重新生成全景Object的内部3D 模型.

必须在 显示.详细信息显示.tessmode设置发生更改后调用此选项.
当更改 hfov, 图像.vfov图像 voffset设置 interactivly 时, 必须使用 updatefov= true 来调用此action以获得更新的全景Object!

注意-内部3D 模型的重建是一个沉重的过程! 此action应小心使用!

参数:
  • updateall (可选)
    • 对于多分辨率全景, 是否应更新所有级别?
    • 可能的设置: truefalse (默认值 = false).
  • updatefov (可选)
例子
set(image.hfov,1);
updateobject(true,true);
updatescreen()
  • 强制重新绘制屏幕.
invalidatescreen()
  • 强制重新绘制屏幕.
  • 并重置 idletime计数器 (没有用户交互的时间).
addlayer(name)
addplugin(name)
addhotspot(name)
addlensflare(name, ath*, atv*)
动态创建并添加新的 layer, plugin, hotspotlensflare元素.

参数:
  • name
    • layer/plugin,hotspot或 lensflare 元素的名称.
  • ath / atv 仅限 lensflare)
    • lensflare 元素的水平和垂直位置 (以度为单位).
例子
addlayer(button);
set(layer[button].url,button.jpg);
set(layer[button].align,bottom);
set(layer[button].x,10);
set(layer[button].y,20);
set(layer[button].onhover,showtext('hovering the new button'));
set(layer[button].onclick, removelayer(button) );
addhotspot(newspot);
set(hotspot[newspot].url,spot.png);
set(hotspot[newspot].ath,150);
set(hotspot[newspot].atv,30);
set(hotspot[newspot].scale,0.7);
set(hotspot[newspot].zoom,true);
set(hotspot[newspot].onclick, removehotspot(newspot) );
addhotspot(polyspot);
set(hotspot[polyspot].fillalpha, 0.25);
set(hotspot[polyspot].borderalpha, 0.50);
set(hotspot[polyspot].onclick, removehotspot(polyspot) );
set(hotspot[polyspot].point[0].ath,-10);
set(hotspot[polyspot].point[0].atv,-10);
set(hotspot[polyspot].point[1].ath,-10);
set(hotspot[polyspot].point[1].atv,+10);
set(hotspot[polyspot].point[2].ath,+10);
set(hotspot[polyspot].point[2].atv,+10);
set(hotspot[polyspot].point[3].ath,+10);
set(hotspot[polyspot].point[3].atv,-10);
addlensflare(sun, 20, -60);
set(lensflare[sun].set,  FLARESET2);
set(lensflare[sun].size, 0.7);
removelayer(name, removechildren*)
removeplugin(name, removechildren*)
removehotspot(name)
removelensflare(name)
动态删除和销毁 layer, plugin, hotspotlensflare元素.

参数:
  • name
    • 应删除的layer/plugin,hotspot或 lensflare 元素的名称.
  • removechildren (可选)
    • 如果设置为 true, 则所有子元素都将被删除.
js( JavascriptFunction(parameters) )
调用 Javascript 函数.

在调用 Javascript 代码之前, 将通过 krpano 分析 参数.在参数中使用 "get" (var) 来解析 krpano 变量.

Flash 提示-此action需要 Flashplayer 的外部接口.只有在浏览器中运行时才可用.在使用 "文件://" url 脱机/本地工作时, 需要调整 Flashplayer 的 安全设置.
例子
.html 或.js 文件中的代码:
function test(p1, p2, p3)
{
alert(p1 + ": " + p2 + " / " + p3);
}
xml 文件中的代码:
js( test('Lookat', get(view.hlookat), get(view.vlookat)) );
jscall( ...any Javascript code...)
直接调用任何类型的 Javascript 代码.

在 Javascript 代码内部, 一个名为 "krpano" 的 krpano Javascript 接口Object将可用于双向通信.

Flash 提示-此action需要 Flashplayer 的外部接口.只有在浏览器中运行时才可用.在使用 "文件://" url 脱机/本地工作时, 需要调整 Flashplayer 的 安全设置.
例子
更改 html 元素的style:
jscall('document.getElementById("test").style.display="none";');
使用 calc ()函数生成 Javascript 调用并传递 krpano 变量:
jscall(calc('console.log("krpano version: ' + version + '")'));
返回上一个网页:
jscall('history.back()');
jsget(variable, ...Javascript code...)
获取 javascript 变量的值或 javascript 函数的返回值.

在 Javascript 代码内部, 一个名为 "krpano" 的 krpano Javascript 接口Object将可用于双向通信.

参数:
  • variable
    • 将存储返回值的 krpano 变量的名称.
    • 变量不存在时将被创建.

Flash 提示-此action需要 Flashplayer 的外部接口.只有在浏览器中运行时才可用.在使用 "文件://" url 脱机/本地工作时, 需要调整 Flashplayer 的 安全设置.
例子
获取当前网页的地址:
jsget(ret, 'location.href');
trace('location=', get(ret));
让用户输入以下内容:
jsget(passwort, 'prompt("Enter Password")');
if(password == 'hidden', ...);
获取当前日期的格式:
jsget(date, 'new Date().toISOString().slice(0,10);');
trace('date=', get(date));
showlog(state*, position*)
显示或隐藏输出输出日志.

参数:
  • state (可选)
    • true -显示日志窗口 (默认值).
    • false -隐藏日志窗口.
  • position (可选, HTML5-only)
    • top -在播放器窗口顶部显示日志.
    • bottom-在播放器窗口底部显示日志 (默认).
debugvar(varname)
在输出日志中显示/输出有关变量的详细信息 (值和类型).
当变量为Object时, 也将显示所有Object属性.

提示:
  • 只有在启用 debugmode模式设置时, 才会显示调试消息.
  • 请考虑在 html 文件中启用 consolelog设置, 以便在浏览器控制台中也能看到这些消息.
  • 做许多输出影响渲染性能! 尤其要避免不断地输出消息每帧!
debug(...)
trace(...)
warning(...)
error(...)
将文本或变量的内容输出到输出日志.


参数:
  • ....
    • 任何文本或变量.
    • 传递变量时, 该变量将自动解析为其值.

提示:
  • 只有在启用 debugmode模式设置时, 才会显示调试消息.
  • 请考虑在 html 文件中启用 consolelog设置, 以便在浏览器控制台中也能看到这些消息.
  • 做许多输出影响渲染性能! 尤其要避免不断地输出消息每帧!
例子
fatalerror(errormessage)
显示错误信息并停止用户交互.

参数:
  • errormessage
    • 要显示的错误消息.