2

在此处输入图像描述

这是我用来通过 css 为对象设置动画的精灵。每帧宽度为 224px,因此 div 的 background-position 属性每帧增加 -224px 并且循环继续。问题是我的 div 的宽度不固定。我使用 div 的百分比宽度来保持分辨率独立。所以我希望我的 224px 宽的框架在 div 的宽度上进行缩放,并且每帧向左移动相同的量。希望你很清楚。这是用于为 div 设置动画的 JS 函数。

function moveTail() {
    if ( typeof moveTail.counter == 'undefined' ) {
        moveTail.counter = 0;
        moveTail.object = $('#genietail');
    }

    if( moveTail.counter == 42 )
        moveTail.counter = -1;
    ++moveTail.counter;
    moveTail.object.css('background-position', moveTail.counter*-224 + "px 0px" );
}
4

1 回答 1

1

有两种缩放精灵图像的方法。

第一个是使用background-sizeCSS 属性。例如,如果您的精灵大小为 100 像素 x 100 像素,默认情况下background-size将采用 value 100px 100px,但如果将其设置为200px 200px它将显示的图像大小加倍。

在您的情况下,它看起来像这样:

var spriteSize = { height: 224, width : 224 * 20 };
var imageSize = { height: 224, width : 224 };
var backgroundWidth = Math.floor((moveTail.object.width()  / imageSize.width) * spriteSize.width);
var backgroundHeight = moveTail.object.height();

moveTail.object.css("background-size", backgroundWidth + "px " +  backgroundHeight + "px");
moveTail.object.css('background-position', moveTail.counter * -moveTail.object.width() + "px 0px" );

第二种是将 CSS 3 属性transformscaleX和一起使用scaleY。如果您希望 div 将显示的大小加倍,您可以在 CSS 中进行transform: scaleX(2) scaleY(2)

于 2012-09-01T15:01:17.473 回答