昨日のエントリーでスロットを実装するプログラムの紹介をしましたが、それを編集して掲載さいているサイトがあったので、紹介。
jQuery + jQuery Easing Plugin
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Sample Slot:jQuery+jQuery Easing Plugin</title>
<script src="libs/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="libs/jquery.easing.1.3.js" type="text/javascript"></script>
<script src="slots.js" type="text/javascript"></script>
<link href="slots.css" rel="stylesheet" type="text/css" />
</head>
<body>
<p align="center">
回転スタートから停止までの時間:
<input id="txt_duration" type="text" value="3" size="3" maxlength="3" />
[秒]
</p>
<p align="center">
アニメーション(回転)方式:
<select id="sel_easing" size="1">
<option selected>jswing</option>
<option>easeInQuad</option>
<option>easeOutQuad</option>
<option>easeInOutQuad</option>
<option>easeInCubic</option>
<option>easeOutCubic</option>
<option>easeInOutCubic</option>
<option>easeInQuart</option>
<option>easeOutQuart</option>
<option>easeInOutQuart</option>
<option>easeInQuint</option>
<option>easeOutQuint</option>
<option>easeInOutQuint</option>
<option>easeInSine</option>
<option>easeOutSine</option>
<option>easeInOutSine</option>
<option>easeInExpo</option>
<option>easeOutExpo</option>
<option>easeInOutExpo</option>
<option>easeInCirc</option>
<option>easeOutCirc</option>
<option>easeInOutCirc</option>
<option>easeInElastic</option>
<option>easeOutElastic</option>
<option>easeInOutElastic</option>
<option>easeInBack</option>
<option>easeOutBack</option>
<option>easeInOutBack</option>
<option>easeInBounce</option>
<option>easeOutBounce</option>
<option>easeInOutBounce</option>
</select>
</p>
<div align="center">
<div style="width:306px;" align="center">
<div class="slots" id="slots_a">
<div class="wrapper" style="margin-top: -200px;"></div>
</div>
<div class="slots" id="slots_b">
<div class="wrapper" style="margin-top: -200px;"></div>
</div>
<div class="slots" id="slots_c">
<div class="wrapper" style="margin-top: -200px;"></div>
</div>
<div style="text-align:center;clear:both;">
<input id="btn_start" type="button" value="Start" onClick="go();" style="margin-top:4px;">
<input id="btn_reset" type="button" value="Reset" onClick="reset();" style="margin-top:4px;" disabled>
</div>
<p id="result" style="text-align:center;color:red;font-size:42px;margin-top:0px"></p>
</div>
</div>
</body>
</html>body {
background-color: white;
padding: 0px;
margin: 0px;
font-size: 12px;
}
.slots {
font-size: 100px;
font-family: arial, helvetica, sans-serif;
overflow: hidden;
width: 100px;
height: 100px;
border: 1px solid black;
float: left;
}
.slots .wrapper {
margin-top: 3px;
width: 100px;
}
.slots .slot {
width: 100px;
height: 100px;
text-align: center;
}var opts = ['1357464992_github.png', '1357465001_ffffound.png', '1357465007_live-journal.png', '1357465012_bebo.png', '1357465021_icon-dock.png', '1357465029_metacafe.png', '1357465036_newsvine.png'];
var results = new Array(3);
var time;
var select;
var columns;
$(document).ready(function() {
onload();
});
function onload() {
// initialize drawed this html page.
columns = 0;
addSlots($("#slots_a .wrapper"));
addSlots($("#slots_b .wrapper"));
addSlots($("#slots_c .wrapper"));
}
function go() {
// initialize after pushed Start button.
time = parseInt($("#txt_duration").val()) * 1000;
select = document.getElementById('sel_easing');
$("#btn_start").attr("disabled", "disabled");
// addSlots($("#slots_a .wrapper"));
moveSlots($("#slots_a .wrapper"));
// addSlots($("#slots_b .wrapper"));
moveSlots($("#slots_b .wrapper"));
// addSlots($("#slots_c .wrapper"));
moveSlots($("#slots_c .wrapper"));
// refee.
$(this).delay(time + 1000).queue(function() {
if (results[0] == results[1] && results[1] == results[2]) {
$("#result").text("当たり!");
} else {
$("#result").text("はずれ~");
}
$("#btn_reset").removeAttr("disabled");
$(this).dequeue();
})
}
function reset() {
$("#slots_a .wrapper").children().remove();
$("#slots_a .wrapper").css({
"margin-top" : "-200px"
});
$("#slots_b .wrapper").children().remove();
$("#slots_b .wrapper").css({
"margin-top" : "-200px"
});
$("#slots_c .wrapper").children().remove();
$("#slots_c .wrapper").css({
"margin-top" : "-200px"
});
$("#btn_start").removeAttr("disabled");
$("#btn_reset").attr("disabled", "disabled");
$("#result").text("");
onload();
}
function addSlots(jqo) {
for (var i = 0; i < 15; i++) {
var ctr = Math.floor(Math.random() * opts.length);
jqo.append("<div class='slot'><img border='0' src='../images/" + opts[ctr] + "' /></div>");
if (i == 12) {
results[columns] = ctr;
columns++;
}
}
}
function moveSlots(jqo) {
time += Math.round(Math.random() * 1000);
var marginTop = parseInt(jqo.css("margin-top"), 10)
marginTop -= (10 * 100)
jqo.stop(true, true);
jqo.animate({
"margin-top" : marginTop + "px"
}, {
'duration' : time,
'easing' : select.options[select.selectedIndex].text
});
}
0 コメント:
コメントを投稿