allereerst wil ik even uitleggen dat ik al gezocht heb op got en tweakers maar hier niets heb kunnen vinden behalve iets over objecten scrollen.
Ik heb op een website een x aantal layers met daarin een plaatje,
deze layers zijn opgebouwd door een array met alle nodige gegevens met een for loopje door te lopen en daarna deze met document.write op het scherm te gooien.
Dit gaat allemaal prefect, wel wat traag, maar dat komt meer door de grote van de array.
Nu wil ik deze layers allemaal bijvoorbeeld 2 pixels per seconde opschuifen, hier heb ik een simpele functie voor gemaakt welke via een loopje (for i=0;i<layers.length;i++)
deze loop past voor iedere row gevonden in de layers array 1 layer object aan,
hij past dus gewoon de style van dit object aan en replaced deze met een waarde die 2 hoger is,
dit gaat ook perfect, alleen zodra ik meerdere images doe (vanaf een stuk of 15) gaat alles in eens heel erg traag.
weet iemand welk stuk er zo traag is? of welke stuk er oponthoud veroorzaakt?
Ik las iets over threading simulren zodat alles niet op elkaar hoeft te wachten, kan iemand dit toelichten?
de scroll functie, wordt aangeroepen met onmouseover='scroll_up=true;scrollup();' en wordt gestopt door onmouseout='scroll_up=false;'
De array met layers: in format: id,x,y,image,imagedir
en de code waarmee deze op het scherm gegooid wordt:
Ik had het idee dat een document.write sneller is dan een hele stapel document.writes, klopt dit?
Zoals je kunt zien disable ik objecten die buiten het scherm gebied komen, en stop ik met scrollen zodat er geen scrollbars in de browser zichbaar worden,
uiteraard zijn er ook functies om de andere kanten op te scrollen.
Alvast bedankt voor jullie hulp,
Ik heb op een website een x aantal layers met daarin een plaatje,
deze layers zijn opgebouwd door een array met alle nodige gegevens met een for loopje door te lopen en daarna deze met document.write op het scherm te gooien.
Dit gaat allemaal prefect, wel wat traag, maar dat komt meer door de grote van de array.
Nu wil ik deze layers allemaal bijvoorbeeld 2 pixels per seconde opschuifen, hier heb ik een simpele functie voor gemaakt welke via een loopje (for i=0;i<layers.length;i++)
deze loop past voor iedere row gevonden in de layers array 1 layer object aan,
hij past dus gewoon de style van dit object aan en replaced deze met een waarde die 2 hoger is,
dit gaat ook perfect, alleen zodra ik meerdere images doe (vanaf een stuk of 15) gaat alles in eens heel erg traag.
weet iemand welk stuk er zo traag is? of welke stuk er oponthoud veroorzaakt?
Ik las iets over threading simulren zodat alles niet op elkaar hoeft te wachten, kan iemand dit toelichten?
de scroll functie, wordt aangeroepen met onmouseover='scroll_up=true;scrollup();' en wordt gestopt door onmouseout='scroll_up=false;'
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| var scrollspeed=70;
var scrollamount=8;
function scrollup(){
for(i=0;i<tilescount;i++){
tiles[i][1]+=scrollamount;
obj=document.getElementById(i).style;
if(tiles[i][0] < window.innerWidth-128 && tiles[i][1] < window.innerHeight-64){
obj.top=tiles[i][1];
obj.left=tiles[i][0];
obj.visibility='visible';
} else {
obj.visibility='hidden';
}
}
if(scroll_up==true){
setTimeout("scrollup()",scrollspeed);
}
} |
De array met layers: in format: id,x,y,image,imagedir
code:
1
2
3
4
5
6
7
8
9
| tiles[0]=new Array(1568,186,6,'1-2-1-0','grass/'); tiles[1]=new Array(1600,194,7,'1-2-2-0','grass/'); tiles[2]=new Array(1632,202,8,'0-1-1-0','rock/'); tiles[3]=new Array(1664,210,9,'0-0-0-0','rock/'); tiles[4]=new Array(1696,226,10,'0-1-0-0','rock/'); tiles[5]=new Array(1728,234,11,'1-1-0-0','rock/'); tiles[6]=new Array(1760,250,12,'1-2-1-0','rock/'); tiles[7]=new Array(1792,258,13,'1-1-1-0','rock/'); tiles[8]=new Array(1824,274,14,'0-0-0-0','rock/'); |
en de code waarmee deze op het scherm gegooid wordt:
code:
1
2
3
4
5
6
7
8
9
10
| var output=new Array();
for(i=0;i<tilescount;i++){
if(tiles[i][0] < window.innerWidth-128 && tiles[i][1] < window.innerHeight-64){
output[i]="<div id=\""+i+"\" name=\""+i+"\" style=\"position:absolute;left:"+tiles[i][0]+";top:"+tiles[i][1]+"; z-index:"+tiles[i][2]+";\">[img]"+backgroundpath+tiles[i][4]+tiles[i][3]+".png></div[/img]";
} else {
output[i]="<div id=\""+i+"\" name=\""+i+"\" style=\"position:absolute;left:0;top:0; z-index:"+tiles[i][2]+";visibility:hidden;\">[img]"+backgroundpath+tiles[i][4]+tiles[i][3]+".png></div[/img]";
}
}
var output=output.join();
document.write(output); |
Ik had het idee dat een document.write sneller is dan een hele stapel document.writes, klopt dit?
Zoals je kunt zien disable ik objecten die buiten het scherm gebied komen, en stop ik met scrollen zodat er geen scrollbars in de browser zichbaar worden,
uiteraard zijn er ook functies om de andere kanten op te scrollen.
Alvast bedankt voor jullie hulp,
[ Voor 14% gewijzigd door killercow op 11-11-2003 13:23 ]
openkat.nl al gezien?
