Hier ist mein Spiel https://play.google.com/store/apps/details?id=com.apurv_studio.appMeine Javascript gebaut Spiel hinkt für touchevents (cordova)
ich diese App auf KitKat, Lutscher und Eibisch getestet haben. Das Spiel bleibt auf Touch-Events in Lollipop und Marshmallow stehen, funktioniert aber gut in KitKat. Ich fand, dass Sound in Lollipop und Marshmallow gut funktioniert, aber in KitKat nicht funktioniert.
Mit Verzögerung ich meine, es stoppt für etwa eine halbe Sekunde. Ich habe nach diesem Problem gesucht. Ich habe festgestellt, dass es bei Ereignissen in Browsern eine Verzögerung von 300 ms gibt. Also habe ich Fast-Click.js benutzt ... aber das Problem bleibt bestehen.
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicitly call 'app.receivedEvent(...);'
onDeviceReady: function() {
app.receivedEvent('deviceready');
},
// Update DOM on a Received Event
receivedEvent: function(id) {
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
console.log('Received Event: ' + id);
}
};
app.initialize();
/* MY CODE HERE */var stp=0;var gameover,playagain,taptoplay;
localStorage.highscore=0;
var level=-1.5;
var myGamePiece;
var myObstacle=[];
var myBackground;
var myScore;
var score=0;
var scoreUpdater=[];
var myLevel;
var rocket=[];
var X=$(window).width();
var Y=$(window).height();
var myGameArea={ // Its the game area consistin of a canvas element and start function.....
canvas: document.createElement("canvas"),
start: function(){
this.canvas.width=$(window).width();//100%;//window.innerwidth;
this.canvas.height=$(window).height();//100%;//window.innerheight;
this.context=this.canvas.getContext("2d");
document.body.insertBefore(this.canvas,document.body.childNodes[0]); // ?????????????????????????????
this.frameno=0;
this.interval=setInterval(updateGameArea,20);
},
clear: function(){
this.context.clearRect(0,0,this.canvas.width,this.canvas.height);
},
stop: function(){
clearInterval(this.interval);
}
}
function calx(a){
return (a*360)/480;
}
function caly(b){
return (b*600)/270;
}
// Play audio
//
function playAudio(url) {
// Play the audio file at url
var my_media = new Media(url,
// success callback
function() {
console.log("playAudio():Audio Success");
},
// error callback
function (err) {
console.log("playAudio():Audio Error: " + err);
}
);
// Play audio
my_media.play();
}
function startGame(){
myGamePiece = new component(193*0.25,161*0.25,"img/superman.png",10,120,"imagec"); /*67*1.6*/ /*14*1.6*/ // width,height,color,position.....super3.png...50/20
myBackground = new component(1500,800,"img/backspace.png",0,0,"background");
myScore = new component("30px","Consolas","purple",5,25,"text"); //X-170,25
myLevel = new component("30px","Consolas","purple",X-140,25,"text");
mySound = new sound("sounds/burst.mp3");
mysnd = new sound("sounds/score.wav");
//var media = new Media("sounds/burst.mp3", onSuccess, onError);// [mediaStatus]);
//scoreUpdater[0] = new component(62.7*0.8,36.8*0.8,"img/scoreupdater.png",90,153,"image");
//rocket[0] = new component(52,76,"img/rocket.png",50,50,"image");
//myObstacle[0] = new component(10,400,"red",calx(300),caly(120),"n");
myGameArea.start(); // adds canvas element and inserts it as first childnode of <body> element.....
}
function component(width,height,color,x,y,type)
{
this.type=type;
if(type=="image" || type=="background" || type=="imagec")
{
this.image = new Image();
this.image.src=color;
}
this.width=width;
this.height=height;
this.x=x;
this.y=y;
this.speedY=0;
this.speedX=0;
this.update=function()
{
ctx=myGameArea.context;
if(this.type=="text")
{
ctx.font=this.width+" "+this.height;
ctx.fillStyle=color;
ctx.fillText(this.text,this.x,this.y);
}
if(this.type=="image" || this.type=="background" || this.type=="imagec")
{
/* if(this.image.src=="img/rocket.png") //?????????????????????????????????????????????????
{
this.image.src="img/rocketflip.png";
}*/
ctx.drawImage(this.image,this.x,this.y,this.width,this.height);
if(this.type=="background")
{ //ctx.scale(-1,1);
ctx.drawImage(this.image,this.x+this.width,this.y,this.width,this.height);
// ctx.scale(-1,1);
}
}
else
{ ctx.fillStyle=color;
ctx.fillRect(this.x,this.y,this.width,this.height);
}
}
this.newPos=function()
{
if(this.type=="imagec")// && this.image.src=="super3.png")
{
if(this.x<0 || this.y<0 || this.x>X-this.width || this.y>Y-this.height)
{
if(this.x<0)
this.x=this.x+1;
else if(this.y<0)
this.y=this.y+1;
else if(this.x>X-this.width)
this.x-=1;
else
this.y-=1;
return;
}
}
this.x+=this.speedX;
this.y+=this.speedY;
if(this.type=="background")
{
if(this.x==-(this.width))
{
this.x=0;
}
}
}
this.crashwith=function(otherobj)
{
var crash=true;
if((this.x+this.width<otherobj.x)||(this.y+this.height<otherobj.y)||(this.x>otherobj.x+otherobj.width)||(this.y>otherobj.y+otherobj.height))
crash=false;
return crash;
}
}
function everyinterval(n){
if((myGameArea.frameno/n)%1==0) return true;
return false;
}
function updateGameArea()
{ var minheight,maxheight,gap,height,mingap,maxgap;
/* for(k=0;k<scoreUpdater.length;k++)
{
if(myGamePiece.crashwith(scoreUpdater[k]))
{
score+=5;
scoreUpdater.pop();
if(score%10==0)
{
level-=0.5; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
}*/
if(scoreUpdater.length!=0 && myGamePiece.crashwith(scoreUpdater[scoreUpdater.length-1]))
{
//playAudio("sounds/score.wav");
mysnd.play();
score+=5;
scoreUpdater.pop();
if(score!=0 && score%20==0)
{
level-=0.5; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
if(rocket.length!=0)
{
var f=rocket.length-1;
if(myGamePiece.crashwith(rocket[f]))
{
if(rocket[f].width!=74.5){
score+=5;
mySound.play();
//media.play();
//playAudio("sounds/burst.mp3");
if(score!=0 && score%20==0)
{
level-=0.5; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
}
rocket[f].width=74.5;//298*0.25;
rocket[f].height=71.25;//285*0.25;
rocket[f].y-=0;
rocket[f].image.src="img/splash_sh.png";
}
}
/* for(i=0;i<myObstacle.length;i++)
{
if(myGamePiece.crashwith(myObstacle[i]))
{ document.getElementById("a").style.visibility='hidden';
document.getElementById("b").style.visibility='hidden';
document.getElementById("c").style.visibility='hidden';
document.getElementById("d").style.visibility='hidden';
document.getElementById("swipe").style.visibility='hidden';
stp=1;
gameover = new component(320*0.9,343*0.9,"img/gover.png",(X-320*0.9)/2,20,"image"); //10,40 2x+wid=X
gameover.update();
playagain = new component(51.2*2,51.2*2,"img/play.png",(X-51.2*2)/2,Y-51.2*2-30,"image"); //118,453 2x+wid=X
playagain.update();
taptoplay = new component("30px","Consolas","purple",(X-170)/2,Y-10,"text"); // 88,577
taptoplay.text="Play again";
taptoplay.update();
exit = new component(51.2*1.3,51.2*1.3,"img/exit.png",X-51.2*1.3-20,70*Y/100,"image"); //268,423
exit.update();
menupic = new component(51.2*1.3,51.2*1.3,"img/menu.png",20,70*Y/100,"image"); //12,423
menupic.update();
menu = new component("30px","Consolas","purple",20,85*Y/100,"text"); //12,517
menu.text="Menu";
menu.update();
// myGameArea.stop();
// gameover.update();
/* var canv=document.createElement("canvas");
var cont=canv.getContext("2d");
canv.width=320;
canv.height=343;
var img = new Image();
cont.img.src="img/gover.png";
cont.drawImage(cont.img,0,0,320,343);*/
/*return;
}
}*/
if(myObstacle.length!=0 && (myGamePiece.crashwith(myObstacle[myObstacle.length-1]) || myGamePiece.crashwith(myObstacle[myObstacle.length-2])))
{ document.getElementById("a").style.visibility='hidden';
document.getElementById("b").style.visibility='hidden';
document.getElementById("c").style.visibility='hidden';
document.getElementById("d").style.visibility='hidden';
document.getElementById("swipe").style.visibility='hidden';
stp=1;
gameover = new component(320*0.9,343*0.9,"img/gover.png",(X-320*0.9)/2,20,"image"); //10,40 2x+wid=X
gameover.update();
playagain = new component(51.2*2,51.2*2,"img/play.png",(X-51.2*2)/2,Y-51.2*2-30,"image"); //118,453 2x+wid=X
playagain.update();
taptoplay = new component("30px","Consolas","purple",(X-170)/2,Y-10,"text"); // 88,577
taptoplay.text="Play again";
taptoplay.update();
exit = new component(51.2*1.3,51.2*1.3,"img/exit.png",X-51.2*1.3-20,70*Y/100,"image"); //268,423
exit.update();
menupic = new component(51.2*1.3,51.2*1.3,"img/menu.png",20,70*Y/100,"image"); //12,423
menupic.update();
menu = new component("30px","Consolas","purple",20,85*Y/100,"text"); //12,517
menu.text="Menu";
menu.update();
return;
}
myGameArea.clear();
myBackground.speedX=-0.5;
myBackground.newPos();
myBackground.update();
myGameArea.frameno+=1;
if(myGameArea.frameno==1 || myObstacle[myObstacle.length-1].x<-10)//everyinterval(150)) //150
{
\t var clrs=['red','blue','yellow','green','pink','orange'];
\t var n = ["AliceBlue","AntiqueWhite","Aqua","Aquamarine","Azure","Beige","Bisque","BlanchedAlmond","Blue","BlueViolet","Brown","BurlyWood","CadetBlue","Chartreuse","Chocolate","Coral","CornflowerBlue","Cornsilk","Crimson","Cyan","DarkBlue","DarkCyan","DarkGoldenRod","DarkGray","DarkGrey","DarkGreen","DarkKhaki","DarkMagenta","DarkOliveGreen","Darkorange","DarkOrchid","DarkRed","DarkSalmon","DarkSeaGreen","DarkSlateBlue","DarkSlateGray","DarkSlateGrey","DarkTurquoise","DarkViolet","DeepPink","DeepSkyBlue","DimGray","DimGrey","DodgerBlue","FireBrick","FloralWhite","ForestGreen","Fuchsia","Gainsboro","GhostWhite","Gold","GoldenRod","Gray","Grey","Green","GreenYellow","HoneyDew","HotPink","IndianRed","Indigo","Ivory","Khaki","Lavender","LavenderBlush","LawnGreen","LemonChiffon","LightBlue","LightCoral","LightCyan","LightGoldenRodYellow","LightGray","LightGrey","LightGreen","LightPink","LightSalmon","LightSeaGreen","LightSkyBlue","LightSlateGray","LightSlateGrey","LightSteelBlue","LightYellow","Lime","LimeGreen","Linen","Magenta","Maroon","MediumAquaMarine","MediumBlue","MediumOrchid","MediumPurple","MediumSeaGreen","MediumSlateBlue","MediumSpringGreen","MediumTurquoise","MediumVioletRed","MidnightBlue","MintCream","MistyRose","Moccasin","NavajoWhite","Navy","OldLace","Olive","OliveDrab","Orange","OrangeRed","Orchid","PaleGoldenRod","PaleGreen","PaleTurquoise","PaleVioletRed","PapayaWhip","PeachPuff","Peru","Pink","Plum","PowderBlue","Purple","Red","RosyBrown","RoyalBlue","SaddleBrown","Salmon","SandyBrown","SeaGreen","SeaShell","Sienna","Silver","SkyBlue","SlateBlue","SlateGray","SlateGrey","Snow","SpringGreen","SteelBlue","Tan","Teal","Thistle","Tomato","Turquoise","Violet","Wheat","White","WhiteSmoke","Yellow","YellowGreen"];
x=myGameArea.canvas.width;
y=myGameArea.canvas.height;
minheight=70;maxheight=400;
height=Math.floor(Math.random()*(maxheight-minheight+1)+minheight); /* +1 is added to acheive max height in case of max. output from random()
+minheight is added to acheive minheight in case of min. output i.e. 0 from random() */
mingap=80;maxgap=200;
gap=Math.floor(Math.random()*(maxgap-mingap+1)+mingap);
myObstacle.push(new component(10,height,n[Math.floor(Math.random()*n.length)],x,0));
myObstacle.push(new component(10,y-height-gap,n[Math.floor(Math.random()*n.length)],x,height+gap)); //320
scoreUpdater.push(new component(62.7*0.8,36.8*0.8,"img/scoreupdater.png",225,Math.floor(Math.random()*Y/2) + Y/4+1,"image"));//cla..300....cal...200
//rposy=[0,616-76];
//rocket.push(new component(52,76,"img/rocket.png",360/2+52/2,rposy[Math.floor(Math.random()*rposy.length)],"image"));
if(myGameArea.frameno==1)
{rocket.push(new component(76,52,"img/rocket_01.png",X-20,Math.floor(Math.random()*(Y-2*52) + 52),"image"));}
else
{
rocket.push(new component(76,52,"img/rocket_h.png",X-40,Math.floor(Math.random()*(Y-2*52) + 52),"image")); // X/2+52/2,0
}
//rocket.push(new component(52,76,"img/rocket.png",myObstacle[myObstacle.length-2].x-(myObstacle[myObstacle.length-4].x+10)-52/2,76,"image"));
}
/*if(everyinterval(200))
{
}*/
/*for(i=0;i<myObstacle.length;i++)
{
myObstacle[i].x+=level; // LEVEL !!!! !!!! !!!! !!!! !!!! !!!!
myObstacle[i].update();
}*/
myObstacle[myObstacle.length-1].x+=level; // LEVEL !!!! !!!! !!!! !!!! !!!! !!!!
myObstacle[myObstacle.length-1].update();
myObstacle[myObstacle.length-2].x+=level; // LEVEL !!!! !!!! !!!! !!!! !!!! !!!!
myObstacle[myObstacle.length-2].update();
/*for(i=0;i<scoreUpdater.length;i++)
{
scoreUpdater[i].x+=level;
scoreUpdater[i].update();
}*/
if(scoreUpdater.length!=0){
scoreUpdater[scoreUpdater.length-1].x+=level;
scoreUpdater[scoreUpdater.length-1].update();}
rocket[rocket.length-1].x-=-level+1;//2.4;
rocket[rocket.length-1].update();
myScore.text="Score:"+score;
myLevel.text="Level:"+((-1.5-level)/0.5+1); // -1-0.5x=level.......where x+1 is actual level......x+1=(1-level)/0.2+1
myScore.update();
myLevel.update();
myGamePiece.newPos();
myGamePiece.update();
}
function sound(src) {
this.sound = document.createElement("audio");
this.sound.src = src;
this.sound.setAttribute("preload", "auto");
this.sound.setAttribute("controls", "none");
this.sound.style.display = "none";
document.body.appendChild(this.sound);
this.play = function(){
this.sound.play();
}
this.stop = function(){
this.sound.pause();
}
}
function place_in_gap(){
//if(!stop){
var y=(myObstacle[myObstacle.length-2].y+myObstacle[myObstacle.length-2].height-myObstacle[myObstacle.length-1].y)/-2+(myObstacle[myObstacle.length-2].height)-myGamePiece.height/2;
//myGamePiece.x=x;
myGamePiece.y=y;
//document.getElementById("p").innerHTML=y;
myGamePiece.update();
//}
}
function hitRocket(event)
{
var x=event.clientX;
var y=event.clientY;
//document.getElementById("p").innerHTML="called!!!..."+x+" "+y;
var i = rocket.length-1;
if(!(x<rocket[i].x || x>rocket[i].x+rocket[i].width || y<rocket[i].y || y>rocket[i].y+rocket[i].height) && rocket[i].width!=74.5)
{
score+=5;
if(score!=0 && score%20==0)
{
level-=0.5; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
}
rocket[i].width=74.5;//298*0.25;
rocket[i].height=71.25;//285*0.25;
rocket[i].y-=5;
rocket[i].image.src="img/splash_sh.png";
mySound.play();
//media.play();
//playAudio("sounds/burst.mp3");
//document.getElementById("p").innerHTML="hit";
// $(rocket[i]).animate({top:'600px'});
}
if(stp)
{
\t if(!(x<playagain.x || x>playagain.x+playagain.width || y<playagain.y || y>playagain.y+playagain.height))
location.reload();
if(!(x<exit.x || x>exit.x+exit.width || y<exit.y || y>exit.y+exit.height))
\t \t \t {
\t \t \t \t //if(score>localStorage.highscore || 1)localStorage.highscore=score;
\t \t \t \t navigator.app.exitApp();
\t \t \t }
\t \t \t if(!(x<menupic.x || x>menupic.x+menupic.width || y<menupic.y || y>menupic.y+menupic.height))
\t \t \t {
\t \t \t \t window.location.assign("index.html");
\t \t \t }
\t \t }
};
@media screen and (min-aspect-ratio: 1/1) and (min-width:400px) {
.app {
background-position:left center;
padding:75px 0px 75px 170px; /* padding-top + padding-bottom + text area = image height */
margin:-90px 0px 0px -198px; /* offset vertical: half of image height */
/* offset horizontal: half of image width and text area width */
}
}
h1 {
font-size:24px;
font-weight:normal;
margin:0px;
overflow:visible;
padding:0px;
text-align:center;
}
.event {
border-radius:4px;
-webkit-border-radius:4px;
color:#FFFFFF;
font-size:12px;
margin:0px 30px;
padding:2px 0px;
}
.event.listening {
background-color:#333333;
display:block;
}
.event.received {
background-color:#4B946A;
display:none;
}
@keyframes fade {
from { opacity: 1.0; }
50% { opacity: 0.4; }
to { opacity: 1.0; }
}
@-webkit-keyframes fade {
from { opacity: 1.0; }
50% { opacity: 0.4; }
to { opacity: 1.0; }
}
.blink {
animation:fade 3000ms infinite;
-webkit-animation:fade 3000ms infinite;
}
canvas{
margin-right: 0px;
margin-bottom: 0px;
margin-left: 0px;
margin-top: 0px;
display: block;
}
body{
margin-right: 0px;
margin-bottom: 0px;
margin-left: 0px;
margin-top: 0px;
}
.left{
position: absolute;
/*left: 50px;
top: 525px;*/
left: 12%;
top: 78.5%;
padding: 28px;
border-radius: 20px;
border-color: blue;
border-style: solid;
background-color: red;
opacity: 0.3;
border-color: blue;
border-style: solid;
outline:none;
}
.up{
position: absolute;
/*left: 150px;
top: 465px;*/
left: 42%;
top: 70%;
padding: 28px;
border-radius: 20px;
border-color: blue;
border-style: solid;
background-color: red;
opacity: 0.3;
border-color: blue;
border-style: solid;
outline:none;
}
.right{
position: absolute;
/*left: 250px;
top: 525px;*/
right: 12%;
top: 78.5%;
padding: 28px;
border-radius: 20px;
border-color: blue;
border-style: solid;
background-color: red;
opacity: 0.3;
border-color: blue;
border-style: solid;
outline:none;
}
.down{
position: absolute;
/*left: 150px;
top: 552px; /*575*/
left: 42%;
top: 87%;
padding: 28px;
border-radius: 20px;
border-color: blue;
border-style: solid;
background-color: red;
opacity: 0.3;
border-color: blue;
border-style: solid;
outline:none;
}
@-webkit-keyframes move{
from{opacity: 1;}
to{opacity:0;}
}
@keyframes move{
from{opacity: 1;}
to{opacity:0;}
}
#swipe{
/*position: absolute;
left: 280px;
top: 200px; /*575*/
position:absolute;
/*left: 80%;*/
right: 5%;
top: 30%;
padding-left: 28px;
padding-right: 28px;
padding-top: 100px;
padding-bottom: 100px;
border-radius: 20px;
border-color: blue;
border-style: solid;
background-color: red;
opacity: 0.3;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
<meta name="format-detection" content="telephone=no">
<meta name="msapplication-tap-highlight" content="no">
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width">
<link rel="stylesheet" type="text/css" href="css/index.css">
<script type="text/javascript">
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(Media);
}
</script>
<script type="text/javascript" src="js/fastclick.js"></script>
<script type="text/javascript" src="js/jquery-2.1.4.min.js"></script>
<!--<script type="text/javascript" src="js/jquery.touchSwipe.min.js"></script>-->
<script type="text/javascript">
$(function() {
FastClick.attach(document.body);
});
function moveUp(){
myGamePiece.speedY=-4;
}
function moveLeft(){
myGamePiece.speedX=-4;
}
function moveRight(){
myGamePiece.speedX=4;
}
function moveDown(){
myGamePiece.speedY=4;
}
function stop(){
myGamePiece.speedX=0;
myGamePiece.speedY=0;
}
</script>
<title>Hello World</title>
</head>
<body onload="startGame()" onclick="hitRocket(event)">
<script type="text/javascript">
/* $("#a").live('click', function(e) {
e.preventDefault()
return false
})
$("#b").live('click', function(e) {
e.preventDefault()
return false
})
$("#c").live('click', function(e) {
e.preventDefault()
return false
})
$("#d").live('click', function(e) {
e.preventDefault()
return false
})*/
/*$("#a").off('click');
$("#b").off('click');
$("#c").off('click');
$("#d").off('click');
$("#swipe").off('click');*/
</script>
\t
<div id="swipe" ontouchmove="place_in_gap()"></div>
<!--<button ontouchstart="moveUp()" onmousedown="moveUp()" onmouseup="stop()" ontouchend="stop()" id="a" class="up"></button>-->
<button ontouchstart="moveUp()" ontouchend="stop()" ontouchmove="stop()" id="a" class="up"></button>
<!--<button ontouchstart="moveLeft()" onmousedown="moveLeft()" onmouseup="stop()" ontouchend="stop()" id="b" class="left"></button>-->
<button ontouchstart="moveLeft()" ontouchend="stop()" ontouchmove="stop()" id="b" class="left"></button>
\t
<!--<button ontouchstart="moveRight()" onmousedown="moveRight()" onmouseup="stop()" ontouchend="stop()" id="c" class="right"></button>-->
<button ontouchstart="moveRight()" ontouchend="stop()" ontouchmove="stop()" id="c" class="right"></button>
<!--<button ontouchstart="moveDown()" onmousedown="moveDown()" onmouseup="stop()" ontouchend="stop()" id="d" class="down"></button>-->
<button ontouchstart="moveDown()" ontouchend="stop()" ontouchmove="stop()" id="d" class="down"></button>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<div id="p"></div>
</body>
</html>
Bitte geben Sie die folgenden Details in Ihre Frage: - Ist die Verzögerung in Lollipop nur passiert? - Was passiert im Spiel, wenn Sie die Lag- und Soundprobleme feststellen? - Was haben Sie versucht, dieses Problem zu beheben? – jeteon
ok ich werde die Details pu! – Apurv
Haben Sie versucht, das Touch-Ereignis mit einem e.prevent-Standard zu verknüpfen und stattdessen einen Klick auszulösen? Das könnte der Trick sein. – Medda86