Я и мой напарник пишем игру "Battlecity" в дартс для мобильного браузера.Проблема заключается в пролистывании направления танка (слева направо, справа налево и т. Д.) В мобильном браузере.Он работает с большим интересом (и по некоторым причинам не работает в Chrome-Browser).Вы можете лучше увидеть проблему, если запустите игру на своем мобильном устройстве (просто откройте ссылку с игрой: https://javajunikorn.github.io/BattleCity/build/web/html/test.html) Интересно то, что проблема существует только при пролистывании через игровое поле (в нашем случае это 27 * 27).html table). Если мы убираем из gamefeeld, то он отлично работает.
Вот код нашего контроллера:
class Direction{
Point first, last;
Game game;
void startListening(){
window.onTouchStart.listen((ev) {
last = null;
first = ev.touches.first.client;
});
window.onTouchMove.listen((ev){
last = ev.touches.first.client;
});
window.onTouchEnd.listen((ev) {
if(last == null || first.distanceTo(last) < 20)
game.player.shoot();
else {
Point d = first - last;
if(d.x.abs() > d.y.abs()){
//Waagerecht
if( first.x > last.x){
//links
game.player.changeDirection(Directions.left);
}
else{
//rechts
game.player.changeDirection(Directions.right);
}
}
else{
//Senkrecht
if(first.y > last.y){
//Up
game.player.changeDirection(Directions.up);
}
else{
//Down
game.player.changeDirection(Directions.down);
}
}
}
});
window.onKeyPress.listen((k) {
//Shoot
if(k.which == 32) { //spacebar
game.player.shoot();
}
//Up
if(k.which == 119 || k.keyCode == KeyCode.UP){
game.player.changeDirection(Directions.up);
}
//Down
if(k.which == 115 || k.keyCode == KeyCode.DOWN){
game.player.changeDirection(Directions.down);
}
//Left
if(k.which == 97 || k.keyCode == KeyCode.LEFT){
game.player.changeDirection(Directions.left);
}
//Right
if(k.which == 100 || k.keyCode == KeyCode.RIGHT){
game.player.changeDirection(Directions.right);
}
});
}
}