在krpano的研究调查中,我们难免遇到 与js 交互的地方. 最近我就遇到了一个.
目的是想控制,在一些场景的缩略图导航中,隐藏掉默认的 那一串数字的命名.
但是由于 krpano xml中 action的功能限制,很多工作都要放到 js里面去操作.
于是就查询文档找到了jsget 这个函数.
可以去官方的文档查看jsget
以下是官方文档的例子.
Get the address of the current webpage:
jsget(ret, ‘location.href’);
trace(‘location=’, get(ret));
Let the user enter something:
jsget(passwort, ‘prompt(“Enter Password”)’);
if(password == ‘hidden’, …);
Get the current date in the format YYYY-MM-DD:
jsget(date, ‘new Date().toISOString().slice(0,10);’);
trace(‘date=’, get(date));
根据krpano 官方文档,很快的我们就尝试了
jsget(passwort, ‘prompt(“Enter Password”)’);
if(password == ‘hidden’, …);
这样,根据js 判断 全景标题的返回值,很快就能做成开关,是否显示缩略图标题的问题.
但是问题来了.当使用jsget的时候,krpano的版本必须满足 1.1.9以上.
krpano官方论坛
当你以为 jsget(isnum,‘checkThumbTitle("’+get(scene[get(i)].title)+’")’); 于是很容易写出这样的入参方式.
当你调试的时候你会发现,无论你怎么调整 单引号,双引号,都会默认成参数的一部分.或者不执行.
最后实现的方式,在这里直接贴出来.感谢"网络游子","斯蒂芬"的帮助,最终写出了一下的代码.成功实现!
//这步可以省略
set(isnan, get(scene[get(i)].title));
//拼接字符串
txtadd(isnans, ‘checkThumbTitle("’,get(isnan),’")’);
传入参数
jsget(isnum,get(isnans));
isnum 就是作为了 js函数checkThumbTitle的返回值.这样,我们就实现了,一些复杂的校验.通过js 处理并返回给 xml action.
这里是简单的校验了,场景的名称.是 数字的部分,返回false 也就是我们要隐藏. 不是数字的部分,编辑过的场景名称,就正常显示.
//js部分的代码,隐藏数字缩略图title yaodeyan
function checkThumbTitle(title){
if(isNaN(title)){
return true;
}else{
return false;
}
}
if(isnum,
txtadd(thumb_image_title_con,'thumb_image_title_con_',get(i)); addlayer(get(thumb_image_title_con));
layer[get(thumb_image_title_con)].loadstyle(thumb_image_title_container);
set(layer[get(thumb_image_title_con)].parent, get(thumb_image_name));
txtadd(thumb_image_title_word,'thumb_image_title_word_',get(i)); addlayer(get(thumb_image_title_word));
set(layer[get(thumb_image_title_word)].html, get(scene[get(i)].title));
layer[get(thumb_image_title_word)].loadstyle(thumb_image_title_word);
set(layer[get(thumb_image_title_word)].parent, get(thumb_image_title_con));
);