こんにちは。
すっかり CreateJSer が板についてきた ひろゆき です。
今回も、ひよこちゃんをジャンプさせることに挑戦してみます。
ただ、SE いれちゃいます。そう、マルチメディアですから。
ということで、SoundJS を使ってみました。
HTMLソースコード
[sourcecode language=”js”]<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Piyo [sound] | CreateJS</title>
<link rel="stylesheet" type="text/css" href="css/index.css" media="all">
<script src="js/easeljs-0.7.0.min.js"></script>
<script src="js/tweenjs-0.5.0.min.js"></script>
<script src="js/movieclip-0.7.0.min.js"></script>
<script src="js/soundjs-0.5.0.min.js"></script>
<script src="js/Piyo.js"></script>
<script src="js/stats.min.js"></script>
<script>
var canvas, stage, piyo, stats;
var base, shade;
var startPos = 0;
var initSpeed = 30;
var gravity = 4;
var bounce = 0.8;
var limit = 18;
var shadeHeight = 100;
var jumpHeight = 0;
var acceleration = 0;
var speed = initSpeed;
var bound;
function init() {
stats = new Stats();
stats.setMode(0);
stats.domElement.style.position = "fixed";
stats.domElement.style.right = "0px";
stats.domElement.style.top = "0px";
document.body.appendChild(stats.domElement);
canvas = document.getElementById("canvas");
stage = new createjs.Stage(canvas);
var sky = new createjs.Shape();
stage.addChild(sky);
sky.graphics.beginLinearGradientFill(["#0069A0", "#00AAE4"], [0, 1], 0, 0, 0, 150);
sky.graphics.drawRect(0, 0, 600, 150);
var ground = new createjs.Shape();
stage.addChild(ground);
ground.graphics.beginLinearGradientFill(["#99CC33", "#7EB133"], [0, 1], 0, 150, 0, 200);
ground.graphics.drawRect(0, 150, 600, 50);
piyo = new lib.Piyo();
stage.addChild(piyo);
piyo.x = canvas.width/2;
piyo.y = 170;
base = piyo.container.base;
shade = piyo.container.shade;
createjs.Sound.registerPlugins([createjs.HTMLAudioPlugin]);
//createjs.Sound.addEventListener("loadComplete", loaded);
createjs.Sound.addEventListener("fileload", loaded);
createjs.Sound.registerSound("assets/bound.mp3", "bound");
stage.update();
createjs.Ticker.setFPS(30);
//createjs.Ticker.useRAF = true;
createjs.Ticker.timingMode = createjs.Ticker.RAF_SYNCHED;
//createjs.Ticker.addListener(this);
}
function loaded(event) {
bound = createjs.Sound.play("bound");
bound.volume = 0.1;
bound.stop();
//createjs.Ticker.addListener(this);
createjs.Ticker.addEventListener("tick", tick);
bound.play();
}
function tick() {
jump();
stage.update();
stats.update();
}
function jump() {
acceleration += gravity;
jumpHeight += speed – acceleration;
if (jumpHeight <= 0) {
bound.play();
jumpHeight = 0;
acceleration = 0;
speed *= bounce;
}
if (speed < limit) {
jumpHeight = 0;
acceleration = 0;
speed = initSpeed;
}
base.y = startPos – jumpHeight;
shade.alpha = 1 – jumpHeight/shadeHeight;
}
</script>
</head>
<body onload="init();" style="background-color:#D4D4D4">
<canvas id="canvas" width="600" height="200" style="background-color:#FFFFFF"></canvas>
</body>
</html>[/sourcecode]
ちょっとうるさいですね。(ToT)ノ
[追記] (2013.06.30.)
Ticker.addListener() は非推奨になっているようなので、書き換えました。
[追記] (2013.10.30.)
CreateJS を 0.7.0 にバージョンアップ。
Ticker.useRAF は非推奨になっているようなので、書き換えました。
SoundJSのイベントも”loadComplete”から”fileload”に書き換えました。