-
Notifications
You must be signed in to change notification settings - Fork 0
/
kirin.js
68 lines (65 loc) · 1.85 KB
/
kirin.js
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
(function($) {
$.fn.suiken = function( options ){
var timer = 0;
var slicecount;
var currentframe = 0;
var sliceheight;
var imgobj = $(this);
var parentobj = $(this).parent();
var toRad = Math.PI / 180;
function init() {
var imgwidth = imgobj.width();
var imgheight = imgobj.height();
var imgsrc = imgobj.attr("src");
slicecount = imgheight;
sliceheight = imgheight/slicecount;
imgobj.css("display","none");
parentobj.prepend($("<ul>").addClass("kirinul").css({"padding-right":setting.amplitude+"px","padding-left":setting.amplitude+"px"}));
var myobj = parentobj.find("ul.kirinul");
for (var i=0;i<slicecount;i++) {
var myy = i*-1*sliceheight;
myobj.append($('<li/>').css({
"height":sliceheight+"px",
"width":imgwidth+"px",
"display":"block",
"margin":"0px",
"padding":"0px",
"background-repeat":"no-repeat",
"background-image":"url("+imgsrc+")",
"background-position":"0px "+myy+"px"
}));
}
myobj.click(function(){
//console.log(timer);
if (timer) {
clearInterval(timer);
timer = 0;
} else {
timer = setInterval(function(){
parentobj.find("li").each(function(index, Element){
var mykakudo = Math.floor((currentframe*setting.speed + index)/slicecount*setting.wavelength);
var myx = Math.floor(setting.amplitude * Math.cos(mykakudo * toRad));
// var myy = index*-1*sliceheight;
$(Element).css({"margin-left":myx+"px"});
//$(Element).css({"background-position":myx+"px "+myy+"px"});
});
currentframe ++;
},1000/setting.fps);
}
});
};
var defaults = {
'fps' : 24,
'speed' : 5,
'amplitude' : 100,
'wavelength' : 500
};
var setting = $.extend( defaults, options );
if(imgobj.width() > 0) {
init();
} else {
imgobj.on('load',init);
}
return this;
}
})(jQuery);