自适应屏幕尺寸的图片
我们制作的漫游会在各种各样的设备上浏览,不同的设备屏幕尺寸各有差异,如果我们按照固定的像素来固定layer的尺寸,那么有些图片在显示器上可能合适,但在手机上看可能就会太大。通常我们需要根据屏幕的宽度和高度来确定layer的宽度和高度。
如下:
1 |
<layer name="test" url="1.jpg" align="center" onloaded="picture_resize(get(name));" /> |
这里我们列出最简单的情况,只列出了最基本的属性,我们已经定义了图片1.jpg的对齐位置是全景的中央,我们要做的就是调整它的尺寸。onloaded这个事件就是在读取完代码之后可处理的动作,因此即使你已经定义了width或者height这两个控制宽度和高度的属性,通过onloaded还是可以进行覆写的。我们用了一个action,名叫picture_resize,其中调用了一个参数,也就是get(name),这样的话就会把test传递到action中。接下来我们看:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<action name="picture_resize"> <!-- 使用屏幕宽度或高度的百分之九十 --> div(aspect, layer[%1].imagewidth, layer[%1].imageheight); mul(new_width, stagewidth, 0.90); div(new_height, new_width, aspect); mul(max_height, stageheight, 0.90); if(new_height GT max_height, copy(new_height, max_height); mul(new_width, new_height, aspect); ); roundval(new_width); roundval(new_height); copy(layer[%1].width, new_width); copy(layer[%1].height, new_height); </action> |
这个action貌似复杂,其实就是判断屏幕的宽高比以及图像自身的宽高比,如果屏幕宽度大于屏幕高度,且图片宽度大于图片高度,则按照屏幕宽度的百分之九十赋值给图片宽度。如果图片宽度小于图片高度,则按照屏幕高度的百分之九十赋值给图片高度。反过来对应屏幕宽度小于屏幕高度的情况,则是类似的。
在这里,我们用stagewidth和stageheight两个变量来获取屏幕宽度和屏幕高度。你需要更改的只是数字0.9,也就是百分之九十。你可以填入其它小于1大于0的数字。当然,如果大于1的话,你的屏幕就会容纳不了你的图片。
在 “krpano中如何让图片自适应屏幕尺寸” 上有 1 条评论