0

В настоящее время я пытаюсь изучить javascript и сделать следующий учебник (http://www.sitepoint.com/creating-a-simple-windows-8-game-with-javascript-input-and-sound/), однако у меня возникла проблема, с которой я не могу пройти.Слушатели Слушатели MSPointer не стреляют

Я создал элемент холста, подключил три прослушивателя к холсту для работы с щелчками мыши.

canvas.addEventListener("MSPointerUp", endAim, false); 
canvas.addEventListener("MSPointerMove", adjustAim, false); 
canvas.addEventListener("MSPointerDown", beginAim, false); 

Но мои функции никогда не вызываются в PointerUp или Down или Move. Ниже приведены функции, о которых идет речь, также обратите внимание, что я сделал «console.log» только для отладки. Ни один из них не записывается на консоль, поэтому я думаю, что события не запускаются.

function beginAim(event){ 
    console.log("Aim ahoy"); 
    if (playerTurn == 1) { 
     if (!isAiming) { 
     aimStart = new createjs.Point(event.x, event.y); 
     isAiming = true; 
     } 
    } 
} 

function adjustAim(event){ 
    console.log("adjustAim event called"); 
    if (isAiming) { 
     var aimCurrent = new createjs.Point(event.x, event.y); 
     aimVector = calculateAim(aimStart, aimCurrent); 
     //ToDo: write text/show aim arror 
     console.log("Aiming... " + aimVector.x + "/" + aimVector.y); 
    } 
} 

function endAim(event){ 
    if (isAiming) { 
     console.log("endAim Function called"); 
     isAiming = false; 
     var aimCurrent = new createjs.Point(event.x, event.y); 
     aimVector = calculateAim(aimStart, aimCurrent); 
     playerFire = true; 
    } 
} 

function calculateAim(start, end){ 
    var aim = new createjs.Point(
     (end.x - start.x)/80, 
     (end.y - start.y)/80); 
    aim.x = Math.min(MAX_SHOT_POWER, aim.x); 
    aim.x = Math.max(0, aim.x); 
    aim.y = Math.max(-MAX_SHOT_POWER, aim.y); 
    aim.y = Math.min(0, aim.y); 
    return aim; 
} 

Спасибо за любую помощь, которую вы, ребята, можете придумать, я уверен, что это тоже что-то простое.

Я знал, что это будет простая проблема. MSPointerUp/Down/Move все для Windows8, поэтому они никогда не запускались.

В итоге я переключился на mousedown, mouseup и mousemove, чтобы получить те же результаты.

+0

Можете ли вы показать дем o jsfiddle.net –

+0

Можем ли мы предположить, что вы тестируете в IE10? – j08691

ответ

1

добавить в тело или холст маршрутизировать сенсорные события JavaScript:

body, canvas { 
     -ms-user-select: none; 
     touch-action: none; 
} 

Затем вам нужно создать объект MSGesture, установите свою цель на холст, а также создать pointerdown слушатель:

var gesture = new MSGesture(); 
gesture.target = canvas; 
canvas.addEventListener("pointerdown", beginAim, false) 

в beginAim добавить обработчик для pointerdown и добавить его жест, как это:

if (event.type == "pointerdown") { 
     gesture.addPointer(e.pointerId); 
     return 
} 
Смежные вопросы