-
Notifications
You must be signed in to change notification settings - Fork 0
/
sprite.js
75 lines (60 loc) · 1.54 KB
/
sprite.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
angular.module('directives')
.directive('sprite', function($parse) {
return function(scope, element, attrs) {
// element is the player div
// attrs.sprite is "player1"
var isWalking;
function setFacing(facing) {
var facing = (typeof facing == 'undefined') ? "down" : facing;
if(facing == "up") {
element.css('backgroundPositionY', '-100px');
}
if(facing == "right") {
element.css('backgroundPositionY', '-50px');
}
if(facing == "down") {
element.css('backgroundPositionY', '-150px');
}
if(facing == "left") {
element.css('backgroundPositionY', '0px');
}
}
function walking() {
var i = 0;
var animateWalk = function() {
return setTimeout(function(){
setSprite(++i % 3);
if(isWalking) {
animateWalk();
}
}, 70);
}
return animateWalk();
}
function setSprite(sprite) {
if(sprite == 0) {
element.css('backgroundPositionX', '0');
}
if(sprite == 1) {
element.css('backgroundPositionX', '-50px');
}
if(sprite == 2) {
element.css('backgroundPositionX', '-100px');
}
}
scope.$watch(attrs.sprite, function(val) {
setSprite(val, scope.player.facing);
})
scope.$watch(attrs.spriteFacing, function(val) {
setFacing(val);
})
scope.$watch(attrs.spriteWalking, function(val) {
if(val) {
isWalking = true;
walking();
} else {
isWalking = false;
}
})
}
})