制作部の稲葉です。
今回はCreateJS公式サイトのチュートリアルを元にtweenjsを学んでみました。
元となるチュートリアルはこちらです。
詳細はリンク先を見て頂くとして、その中のinit()内だけにフォーカスして行きますね。
// チュートリアル
function init() {
var stage = new createjs.Stage("demoCanvas");
var circle = new createjs.Shape();
circle.graphics.beginFill("Crimson").drawCircle(0, 0, 50);
circle.x = 100;
circle.y = 100;
stage.addChild(circle);
createjs.Tween.get(circle, {loop: true})
.to({x: 400}, 1000, createjs.Ease.getPowInOut(4))
.to({alpha: 0, y: 75}, 500, createjs.Ease.getPowInOut(2))
.to({alpha: 0, y: 125}, 100)
.to({alpha: 1, y: 100}, 500, createjs.Ease.getPowInOut(2))
.to({x: 100}, 800, createjs.Ease.getPowInOut(2));
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", stage);
}
ここから少しずつ変更していきます。
まずさっくとネコを用意します。
このネコにぴょこぴょこ飛び跳ねてもらうのが目標です。
まず右にすっと移動するイージングを、飛び跳ねている風の動きに変更してみます。
function init() {
var stage = new createjs.Stage("demoCanvas");
var circle = new createjs.Shape();
circle.graphics.beginFill("Crimson").drawCircle(0, 0, 50);
circle.x = -25; //開始位置変更
circle.y = 250; //開始位置変更
stage.addChild(circle);
createjs.Tween.get(circle, {loop: true})
.to({x: 200}, 3000, createjs.Ease.elasticOut); //イージング変更
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", stage);
}
こんな感じでしょうか。
次に、createjs.Bitmapを使って赤い円をネコの画像に変更してみます。
function init() {
var stage = new createjs.Stage("demoCanvas");
var cat = new createjs.Bitmap("http://jsrun.it/assets/i/G/L/Y/iGLYn.png"); //ネコに変更
cat.x = -100; //開始位置変更
cat.y = 100; //開始位置変更
stage.addChild(cat);
createjs.Tween.get(cat, {loop: true})
.to({x: 200}, 3000, createjs.Ease.elasticOut);
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", stage);
}
まだ、横に移動しているので、縦方向の移動にしましょう。
function init() {
var stage = new createjs.Stage("demoCanvas");
var cat = new createjs.Bitmap("http://jsrun.it/assets/i/G/L/Y/iGLYn.png");
cat.x = 150; //開始位置変更
cat.y = 500; //開始位置変更
stage.addChild(cat);
createjs.Tween.get(cat, {loop: true})
.to({y: 200}, 3000, createjs.Ease.elasticOut); //y軸移動に変更
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", stage);
}
canvasサイズが500pxで基準位置がcanvasの上になるので、yは500から始めました。
良い感じになってきましたが、もう少しネコを増やしたくなってきました。
適当に4匹にしてみます。
function init() {
var stage = new createjs.Stage("demoCanvas");
//ネコを増やす
var cats = [];
for(var i = 0, l = 4; i < l; i++){
cats[i] = new createjs.Bitmap("http://jsrun.it/assets/i/G/L/Y/iGLYn.png");
cats[i].x = i * 100;
cats[i].y = 500;
stage.addChild(cats[i]);
createjs.Tween.get(cats[i], {loop: true})
.to({y: 200}, 3000, createjs.Ease.elasticOut);
}
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", stage);
}
高さがそろったジャンプが見られるようになりました。
でもどうせならランダムにジャンプする方が自然ですね。
function init() {
var stage = new createjs.Stage("demoCanvas");
var cats = [];
for(var i = 0, l = 4; i < l; i++){
cats[i] = new createjs.Bitmap("http://jsrun.it/assets/i/G/L/Y/iGLYn.png");
cats[i].x = i * 100;
cats[i].y = 500;
stage.addChild(cats[i]);
createjs.Tween.get(cats[i], {loop: true})
.to({y: (200 * Math.random())}, (3000 * (Math.random()+1)), createjs.Ease.elasticOut); //高さと時間をランダムに
}
createjs.Ticker.setFPS(60);
createjs.Ticker.addEventListener("tick", stage);
}
無事にぴょこぴょこ元気にジャンプするネコが見られました。
まだ変更したい部分はありますが、今回はここまでです。
最終コードはこちらから確認できます。
(埋め込みできなかった、、、)
それではまた。