Jquery 3D戒指

时间:2012-06-01 06:47:55

标签: javascript jquery 3d

我想做一个与本网站http://www.asianimedia.com/

相同的3D效果

但是我需要它在jquery中,而不是在flash中。

我已经尝试了JQUERY 3D引擎,通过使用这个库我可以做类似的事情,但我需要99%相同,我现在不能这样做

谁能告诉我怎么做?或者是否有更好的3D库

这是我目前正在使用的3D引擎 http://www.devirtuoso.com/2009/09/3d-plane-for-jquery-3d-engine/

1 个答案:

答案 0 :(得分:2)

好的,所以只使用jQuery(没有css转换,意味着它应该非常兼容),我想出了以下内容:

http://jsfiddle.net/andyc/ZncP6/

var numOfBoxes = 10;
var boxContainer = $(".boxcontainer");
var gap = 360 / (numOfBoxes);

for (var i = 0; i < numOfBoxes; i++) {
    $("<div>").attr("data-offset", (gap * i)).addClass("box").appendTo(boxContainer);
}

$(".box").each(function() {
    var box = $(this);
    positionBox(box, 0);
});


$({position: 0}).animate({position: 360}, {
    duration: 4000,
    step: function() {
        var currentPosition = this.position;
        console.log(currentPosition);
        $(".box").each(function() {
            var box = $(this);
            positionBox(box, currentPosition);
        });
    }
});

function positionBox(box, position) {
    var newPosition = position + box.data("offset");
    var newRadianPosition = convertToRadians(newPosition);

    var x = Math.cos(newRadianPosition) * 200 + 200;
    var y = Math.sin(newRadianPosition) * 100 + 200;

    var absolutePosition = newPosition % 360;
    if (absolutePosition > 180) {
        box.css("z-index", "0");
    }
    else {
        box.css("z-index", "");
    }

    // Could scale the size of the item here as well as position
    box.css("top", y + "px").css("left", x + "px");
}

function convertToRadians(degrees) {
    return degrees * (3.14159265 / 180);
}​

它有点粗糙和准备好,显然你想要根据你的需要定制它。实际上,它的作用是创建一个自定义jQuery动画,每个步骤,增加和重新定位围绕中心div的小div。如果它们是中途,它的z指数会发生变化,从而产生深度幻觉。

如果您希望它看起来更逼真,您可以根据它们与字体的接近程度来调整div的大小。

这有帮助吗?

如果您想要更多解释,请告诉我! :) 的Ta!