javascript - 如何使用 javascript 从 Sprite 表缩放/拉伸(stretch)/倾斜 Sprite ?

标签 javascript css image-processing sprite-sheet

一些背景: 我正在制作一个 raycaster,好吧......正在制作。但我决定稍微改变一下。我开始着手创建光线转换器,并决定只显示一个图标并拉伸(stretch)/倾斜它而不是仅仅围绕一堆像素移动会容易得多。

我的问题是: 我如何使用 javascript 从 sprite 表缩放/拉伸(stretch)/倾斜 sprite?

我基本上想从 sprite 图像中获取 16px x 16px 图像,然后使用 javascript 对其进行定位、缩放、旋转和倾斜。我应该怎么做?

如果这有帮助,我正在考虑连接该图像的三个版本,以在不实际使用 3D 的情况下赋予它 3D block 在 3D 空间中四处移动的印象。

最佳答案

很可能最简单的方法是使用 background-size css 属性。由于大多数现代浏览器(IE 9+、FF4+、Safari4+、Chrome3+)都支持它,您可以执行以下操作:

html:

<div id="mySprite">
</div>

CSS:

#mySprite{
    height: 80px; /* 64px * 1.25 */
    width: 80px;  /* 64px * 1.25 */
    background-image:url(my.png);
    background-position: -0px -560px; /* pick specific one at -448px * 1.25 */
    background-size:640px 640px; /* scale image to 512px * 1.25 */
}

spritesheet 上有大小为 64x64px 的 sprite,并将它们缩放到 80x80px。 请在此处查看实时示例:http://jsfiddle.net/Zgr5w/1/

正如@Prusse 所说:您也可以使用 transform: scale(),但它有一些缺点:浏览器支持、额外的位置转换、与其他元素的对齐可能会被破坏:

#mySprite{
    height: 64px;
    width: 64px;
    background-image:url(my.png);
    background-position: -0px -448px;
    transform:scale(1.25);
    /* additional to compensate the position shift */
    position:relative;
    top:10px;
    left:10px;
}

请在此处查看上述两种方法的实例:http://jsfiddle.net/Zgr5w/1/

关于javascript - 如何使用 javascript 从 Sprite 表缩放/拉伸(stretch)/倾斜 Sprite ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8450214/

相关文章:

javascript - SOAP API 调用 Javascript 期间的 Async/Await 问题

html - 选项 txt 是覆盖谷歌浏览器上选择的下拉箭头

css - 如何在 border-collapse=separate 的表的最后可见行上放置 border-bottom?

MATLAB 的 Canny 滤波器的 Python 实现

python - cv2是否接受二进制图像?

javascript - 无法在 'postMessage' : The target origin provided does not match the recipient window's origin 'DOMWindow' ) 上执行 ('null'

javascript - create-react-app with node express 获取 %PUBLIC_URL%

javascript - 如何使带有 &lt;input&gt; 按钮的搜索栏在输入时打开域?

css - 我在菜单中的元素似乎没有宽度?

image - 二值化图像中的单独交叉线段