Javascript动画比例精灵

时间:2012-09-01 14:43:34

标签: javascript animation sprite

enter image description here

这是我用来通过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" );
}

1 个答案:

答案 0 :(得分:1)

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

第一个是使用background-size CSS属性。如果你的精灵大小是例如100px乘100px,默认情况下background-size将取值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属性transformscaleXscaleY一起使用。如果你想让一个div加倍显示你可以在CSS transform: scaleX(2) scaleY(2)中显示的大小。