2018-04-02 17:43:20 +00:00
|
|
|
function Scratch(){
|
|
|
|
|
|
|
|
var self = this;
|
2018-04-24 18:12:38 +00:00
|
|
|
self.canvas = $("#scratch");
|
|
|
|
self.ctx = self.canvas.getContext("2d");
|
|
|
|
|
|
|
|
// 711 x 400
|
|
|
|
var w = 711;
|
|
|
|
var h = 400;
|
2018-04-02 17:43:20 +00:00
|
|
|
|
|
|
|
self.scratchIn = function(){
|
2018-04-20 18:47:58 +00:00
|
|
|
|
|
|
|
// SOUND!
|
|
|
|
SOUNDS.scratch_in.play();
|
|
|
|
|
|
|
|
// anim
|
2018-04-02 17:43:20 +00:00
|
|
|
self.startUpdateLoop(false, function(){
|
2018-04-24 18:12:38 +00:00
|
|
|
self.canvas.style.display = "none";
|
2018-04-02 17:43:20 +00:00
|
|
|
});
|
2018-04-20 18:47:58 +00:00
|
|
|
|
2018-04-02 17:43:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
self.scratchOut = function(){
|
2018-04-20 18:47:58 +00:00
|
|
|
|
|
|
|
// SOUND!
|
|
|
|
SOUNDS.scratch_in.play();
|
|
|
|
|
|
|
|
// anim
|
2018-04-24 18:12:38 +00:00
|
|
|
self.canvas.style.display = "block";
|
2018-04-02 17:43:20 +00:00
|
|
|
self.startUpdateLoop(true);
|
2018-04-20 18:47:58 +00:00
|
|
|
|
2018-04-02 17:43:20 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
self.startUpdateLoop = function(out, callback){
|
|
|
|
var frame = 0;
|
2018-04-24 18:12:38 +00:00
|
|
|
var xOffset = out ? 0 : w;
|
2018-04-02 17:43:20 +00:00
|
|
|
var handle = subscribe("update", function(){
|
2018-04-24 18:12:38 +00:00
|
|
|
var yOffset = Math.floor(frame)*h;
|
|
|
|
|
|
|
|
// Redraw canvas
|
|
|
|
self.ctx.clearRect(0, 0, self.canvas.width, self.canvas.height);
|
|
|
|
self.ctx.drawImage(
|
|
|
|
IMAGES.scratch,
|
|
|
|
xOffset, yOffset, w, h,
|
|
|
|
0, 0, w, h);
|
|
|
|
|
|
|
|
// Staaaahhhhhp
|
2018-04-02 17:43:20 +00:00
|
|
|
if(frame>19){
|
|
|
|
unsubscribe(handle);
|
|
|
|
if(callback) callback();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
frame+=0.5;
|
2018-04-24 18:12:38 +00:00
|
|
|
|
2018-04-02 17:43:20 +00:00
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|