@@ -0,0 +1,31 @@ | |||
function События() | |||
{ | |||
this.создать = function() | |||
{ | |||
this.обработчики = []; | |||
}; | |||
this.подписать = function(обработчик) | |||
{ | |||
this.обработчики.push(обработчик); | |||
}; | |||
this.отписать = function(обработчик) { | |||
var номер = this.обработчики.indexOf(обработчик); | |||
if (номер != -1) | |||
{ | |||
this.обработчики.splice(номер, 1); | |||
} | |||
}; | |||
this.уведомить = function(событие) { | |||
for (var номер in this.обработчики) | |||
{ | |||
var обработчик = this.обработчики[номер]; | |||
обработчик.обработатьСобытие(событие); | |||
} | |||
}; | |||
// Конструктор. | |||
this.создать(); | |||
} |
@@ -1,9 +1,18 @@ | |||
function Редактор(имяОбласти) | |||
function Редактор(события, имяОбласти) | |||
{ | |||
this.создать = function() | |||
{ | |||
this.установитьAce(); | |||
this.улавливатьРедактирование(); | |||
this.улавливатьЗавершениеРедактирования(); | |||
события.подписать(this); | |||
}; | |||
this.обработатьСобытие = function(событие) | |||
{ | |||
if (событие == "завершили редактирование") | |||
{ | |||
this.проверитьКорректностьКода(); | |||
} | |||
}; | |||
this.установитьAce = function() | |||
@@ -13,7 +22,7 @@ function Редактор(имяОбласти) | |||
this.ace.session.setMode("ace/mode/javascript"); | |||
} | |||
this.улавливатьРедактирование = function() | |||
this.улавливатьЗавершениеРедактирования = function() | |||
{ | |||
var тут = this; | |||
this.ace.session.on("change", function(дельта) { | |||
@@ -24,7 +33,7 @@ function Редактор(имяОбласти) | |||
{ | |||
if (билет == тут.билет) | |||
{ | |||
тут.проверитьКорректностьКода(); | |||
события.уведомить("завершили редактирование"); | |||
} | |||
}, | |||
1000 | |||
@@ -37,11 +46,11 @@ function Редактор(имяОбласти) | |||
try | |||
{ | |||
eval(this.ace.session.getValue()); | |||
/**/console.debug("ИГР Редактор.проверитьКК OK"); | |||
события.уведомить("код корректен"); | |||
} | |||
catch (ошибка) | |||
{ | |||
/**/console.debug("ИГР Редактор.проверитьКК ОШИБКА: ", ошибка); | |||
события.уведомить("код некорректен"); | |||
} | |||
}; | |||
@@ -1,16 +1,33 @@ | |||
function Пульт(имяОбласти, имяПуска) | |||
function Пульт(события, имяОшибки, имяПуска) | |||
{ | |||
this.создать = function() | |||
{ | |||
this.настроитьКнопкуПуска(); | |||
}; | |||
var ошибка = document.getElementById(имяОшибки); | |||
this.настроитьКнопкуПуска = function() | |||
{ | |||
var пуск = document.getElementById(имяПуска); | |||
пуск.addEventListener("click", function(событие) { | |||
/**/console.debug("НАДО запустить"); | |||
}); | |||
события.подписать(this); | |||
}; | |||
this.обработатьСобытие = function(событие) | |||
{ | |||
if (событие == "код корректен") | |||
{ | |||
this.показатьОшибку(false); | |||
} | |||
else if (событие == "код некорректен") | |||
{ | |||
this.показатьОшибку(true); | |||
} | |||
}; | |||
this.показатьОшибку = function(показать) | |||
{ | |||
ошибка.innerHTML = показать ? "⚠" : " "; | |||
}; | |||
// Конструктор. | |||
@@ -2,9 +2,9 @@ function Муром() | |||
{ | |||
this.создать = function() | |||
{ | |||
this.редактор = new Редактор("редактор"); | |||
this.пульт = new Пульт("пульт", "пуск"); | |||
this.события = new События(); | |||
this.редактор = new Редактор(this.события, "редактор"); | |||
this.пульт = new Пульт(this.события, "ошибка", "пуск"); | |||
}; | |||
// Конструктор. | |||
@@ -31,7 +31,8 @@ | |||
bottom: 0; | |||
width: 4em; | |||
display: flex; | |||
justify-content: center; | |||
flex-direction: column; | |||
/*justify-content: center;*/ | |||
border: 1px dashed gainsboro; | |||
} | |||
#воспроизведение | |||
@@ -44,27 +45,21 @@ | |||
} | |||
</style> | |||
<style> | |||
/* | |||
.кнопка { | |||
border-radius: 50%; | |||
width: 3em; | |||
height: 3em; | |||
border: 2px solid lightgrey; | |||
display: flex; | |||
align-items: center; | |||
justify-content: center; | |||
background: white; | |||
.впульте | |||
{ | |||
margin: 0 auto; | |||
} | |||
*/ | |||
</style> | |||
</head> | |||
<body> | |||
<div id="редактор"></div> | |||
<div id="пульт"> | |||
<a id="пуск" class="uk-icon-button uk-margin-top uk-margin-bottom" uk-icon="play" uk-tooltip="Пуск"></a> | |||
<span id="ошибка" class="впульте"> </span> | |||
<a id="пуск" class="впульте uk-icon-button uk-margin-top" uk-icon="play" uk-tooltip="Пуск"></a> | |||
</div> | |||
<div id="воспроизведение"></div> | |||
<script src="040.события.js"></script> | |||
<script src="100.редактор.js"></script> | |||
<script src="200.пульт.js"></script> | |||
<script src="700.муром.js"></script> | |||