This commit is contained in:
Ilya Kantor 2016-08-05 16:53:08 +03:00
parent 4c531b5ae7
commit d4c714cbe1
261 changed files with 7370 additions and 546 deletions

View file

@ -0,0 +1,64 @@
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script src="menu.js"></script>
<script>
function AnimatingMenu() {
Menu.apply(this, arguments);
}
AnimatingMenu.prototype = Object.create(Menu.prototype);
AnimatingMenu.prototype.STATE_ANIMATING = 2;
AnimatingMenu.prototype.open = function() {
var self = this;
this._state = this.STATE_ANIMATING;
this._timer = setTimeout(function() {
Menu.prototype.open.call(self);
}, 1000);
};
AnimatingMenu.prototype.close = function() {
clearTimeout(this._timer);
Menu.prototype.close.apply(this);
};
AnimatingMenu.prototype._stateAsString = function() {
switch (this._state) {
case this.STATE_ANIMATING:
return 'анимация';
default:
return Menu.prototype._stateAsString.call(this);
}
};
// тест, использование..
var menu = new AnimatingMenu();
menu.showState(); // закрыто
menu.open();
menu.showState(); // анимация
setTimeout(function() { // через 1 секунду
menu.showState(); // открыто
menu.close();
menu.showState(); // закрыто
}, 1000);
</script>
</body>
</html>

View file

@ -0,0 +1,28 @@
function Menu(state) {
this._state = state || this.STATE_CLOSED;
};
Menu.prototype.STATE_OPEN = 1;
Menu.prototype.STATE_CLOSED = 0;
Menu.prototype.open = function() {
this._state = this.STATE_OPEN;
};
Menu.prototype.close = function() {
this._state = this.STATE_CLOSED;
};
Menu.prototype._stateAsString = function() {
switch (this._state) {
case this.STATE_OPEN:
return 'открыто';
case this.STATE_CLOSED:
return 'закрыто';
}
};
Menu.prototype.showState = function() {
alert(this._stateAsString());
}