スマホ対応アニメーション支援ライブラリ
ボールのバウンドアニメーション
ステージ上をマウスを押している間ボールが配置されバウンドします。
var loader = new smart.Loader();
loader.load({
red :"img/ballRed.png",
blue :"img/ballBlue.png",
green :"img/ballGreen.png",
yellow:"img/ballYellow.png"
},function(imgs)
{
var stage = new smart.Stage("demo2");
var colorCount = 0;
var pressed = 0;
// smart.Canvas を継承してバウンドするボールを定義
var Ball = S.extend(smart.Canvas,{
init:function(img,fn)
{
smart.Canvas.apply(this,[40, 40 ,img]);
this.times = 300;
this.complete = fn;
var rad = Math.random()*Math.PI*2;
this.speedX = Math.cos(rad) * 16;
this.speedY = Math.sin(rad) * 16;
},
update:function()
{
if(--this.times)
{
this.x += this.speedX;
this.y += this.speedY;
if(this.y > stage.height - this.height)
{
this.y = stage.height - this.height;
this.speedY *= -0.8;
}
this.speedX *= 0.98;
this.speedY += 1;
}
else
{
this.complete();
}
}
});
var cX = 0;
var cY = 0;
stage.on("mousemove touchmove",function(e)
{
cX = e.layerX;
cY = e.layerY;
});
stage.on("touchstart mousedown",function(e)
{
pressed = 1;
e.preventDefault();//長押し時のメニューを出さないように
});
stage.on("touchend mouseup",function(e)
{
pressed = 0;
});
smart.ticker.on("tick",function(e)
{
if(pressed)
{
var color = ["red","blue","green","yellow"][colorCount++ % 4];
var ball = stage.addChild(new Ball(imgs[color],function()
{
stage.removeChild(ball);
}));
ball.x = cX - ball.width/2;
ball.y = cY - ball.height/2;
}
for(var i=0,len = stage.children.length;i<len;i++)
{
stage.children[i] && stage.children[i].update();
}
});
});
Copyright (C) 2011-2017 akira igarashi (UNIZONBEX) All Rights Reserved.