У меня есть drawButtons
функцию, которая принимает аргумент «nonhover
», «hover1
» или «hover2
» и черпает новую кнопку набора на холст, и в зависимости от аргумента она принимает, нарисуют кнопки разных цветов. Он работает, когда я назову его от setUpGame()
, но не тогда, когда я его называю от draw()
. Я хочу назвать это из draw(), потому что draw()
называется 80 раз в секунду в setInterval()
. Таким образом, он может продолжать проверять, наводится ли курсор мыши над кнопкой и нарисовывается соответствующий набор кнопок.холста изменение кнопки OnMouseOver цвет
setUpGame()
вызывается вне любого объекта или функции. draw()
вызывается setInterval()
, который находится вне любой функции или объекта. setInterval вызывает рисование 80 раз в секунду.
Другая функция, которая фактически должна быть вызвана draw()
, потому что в ней говорится: «Если мышь над кнопкой одна: drawButtons (« hover1 ») и т. Д. Он просто не рисует кнопки, когда я назвать его.
там нет ошибок в браузере Javascript консоли. Я использую Chrome, который лучше всего работает с моей игрой.
из этого мы можем сделать вывод, что нет никаких проблем с drawButtons()
, как он работал, когда вызывается из setUpGame()
Возможно, проблема с draw()
как drawButtons()
не работает, когда я вызываю ее оттуда (но для того, чтобы удивлять нас больше, displayNumbers действительно отображает числа, когда я это называю), и она отлично работала при игре в игру (здесь мы не играем в игра, мы находимся на стартовом экране).
Возможно, проблема связана с getMouseOver()
, потому что это нигде не работает.
Покажу вам getMouseOver()
. Моя программа становится большой, и с самого начала очень сложно показать слишком много. Я намерен называть эту функцию 80 раз в секунду.
getMouseOver: function() {
window.onload = (function(){
window.onmouseover = function(e) {
// IE doesn't always have e here
e = e || window.event;
// get event location
// change the code so that it gives the relative location
var location = {
x: e.pageX - offset.x,
y: e.pageY - offset.y
};
if (location.x > 103.5 && location.x < 265.5) {
if (location.y > 240 && location.y < 291) {
nonGameContent.drawButtons("hover1");
}
}
if (location.x > 103.5 && location.x < 265.5) {
if (location.y > 160 && location.y < 212) {
nonGameContent.drawButtons("hover2");
}
}
else{
nonGameContent.drawButtons("nonHover");
}
}
})},
Я сделал для drawRects (кнопок), но не для текста в них (fillText) – user2602079
Если проблема не устранена, вы можете очистить свой холст (canvas.width = canvas.width;) и перерисовать все объекты –
это просто в: проблема определенно с getMouseOver(), потому что я вызвал drawButtons() из draw(), и он работает, но я вызвал getMouseOver() из draw(), и он не работает. Это хороший прогресс. draw() удаляет холст перед рисованием. – user2602079