<style name="skin_ftyxhotspot_F"
/* 定义图片源文件,这是一张包含所有动画帧的“雪碧图”(Sprite Sheet) */
url="F.png"
/* 当图片加载完成时立即执行:
1. 启动动画引擎 do_crop_animation,参数为:帧宽86px, 帧高86px, 帧率30帧/秒
2. 执行 add_all_the_time_tooltip_for_VR() 添加文本提示框 */
onloaded="do_crop_animation(86,86, 30);add_all_the_time_tooltip_for_VR()"
/* 初始透明度设为 0.8 */
alpha="0.8"
/* 鼠标移出事件:使用 tween(补间动画) 将图标平滑恢复到 0.6 的大小和 0.8 的透明度 */
onout.addevent="tween(scale,0.6); tween(alpha,0.8);"
/* 鼠标悬停事件:使用 tween 平滑放大图标到 0.8,透明度提升至 0.9,产生“呼吸交互感” */
onover.addevent="tween(scale,0.8); tween(alpha,0.9);"
/* PC 端正常状态下的缩放比例 */
scale.normal="0.6"
/* 移动设备端正常状态下的缩放比例(为了手指更容易点击,通常比PC端稍大) */
scale.mobile="0.7"
/* 点击事件核心逻辑:
1. if(linkedscene...): 判断是否配置了目标场景(linkedscene)
2. skin_hidetooltips(): 隐藏当前的文字提示
3. tween(...): 播放一个消失动画(缩小至0.25、Y轴向上偏移20、透明度降为0)
4. looktohotspot(): 将全景视角平滑移动并对准当前点击的热点
5. loadscene(...): 加载目标场景,并带入全局设置的加载过渡效果(flags和blend)
6. skin_updatescroll(): 刷新皮肤的滚动UI状态 */
onclick="if(linkedscene, skin_hidetooltips(); tween(scale,0.25,0.5); tween(oy,20,0.5); tween(alpha,0,0.8); looktohotspot(); loadscene(get(linkedscene),null,get(skin_settings.loadscene_flags),get(skin_settings.loadscene_blend)); skin_updatescroll(); );"
/>
<action name="do_crop_animation" scope="local" args="framewidth, frameheight, framerate">
calc(local.xframes, (caller.imagewidth /framewidth) BOR 0);
calc(local.frames, xframes * ((caller.imageheight / frameheight) BOR 0));
def(local.frame, integer, 0);
calc(caller.crop, '0|0|' + framewidth + '|' + frameheight);
setinterval(calc('crop_anim_' + caller.name), calc(1.0 / framerate),
if(caller.loaded,
inc(frame);
if(frame GE frames,
if(caller.onlastframe !== null, callwith(caller, onlastframe() ) );
set(frame,0);
);
mod(xpos, frame, xframes); div(ypos, frame, xframes); Math.floor(ypos); mul(xpos, framewidth); mul(ypos, frameheight); calc(caller.crop, xpos + '|' + ypos + '|' + framewidth + '|' + frameheight);
,
clearinterval(calc('crop_anim_' + caller.name));
);
);
</action>