2013-07-26 3 views
0

У меня есть 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"); 
      } 
     } 
    })}, 

ответ

0

В этой скрипте вы работаете с click() и onmousemove(). я хорошо не понимаю, если вы хотите кнопку, чтобы отобразить в начале или просто при наведении указателя мыши где-нибудь на будущем месте кнопки, но это начало: http://jsfiddle.net/Akinaru/3a7g2/57/

Основное изменение:

canvas.onmousedown = nonGameContent.getMouseClick; 
canvas.onmousemove = nonGameContent.getMouseOver; 
+0

Я сделал для drawRects (кнопок), но не для текста в них (fillText) – user2602079

+0

Если проблема не устранена, вы можете очистить свой холст (canvas.width = canvas.width;) и перерисовать все объекты –

+0

это просто в: проблема определенно с getMouseOver(), потому что я вызвал drawButtons() из draw(), и он работает, но я вызвал getMouseOver() из draw(), и он не работает. Это хороший прогресс. draw() удаляет холст перед рисованием. – user2602079

0

изменить цвет холста прямоугольник при наведении курсора мыши на его использование OnMouseMove, чтобы найти, если вы над ним, а затем перерисовывать полотно с различным цветом прямоугольника

getMouseClick: функция() { window.onmousemove = функция (е) {

Смежные вопросы