[JS + DHTML] Alle divs op zelfde tijdstip verplaatsen

Pagina: 1
Acties:

  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
Ik ben momenteel bezig met een Javascript game.
Alle collision e.d. zit er al in, en eigenlijk werkt ook alles wel.
Het spel is een soort Mario, en het scherm moet dus meescrollen met waar je speler is.
Momenteel ziet mn main loop (eigenlijk gewoon een timer met interval 25ms) er ongeveer zo uit:
*pseudo code*
code:
1
2
3
For all objects, Update
ScrollContainer
For all objects, Draw


De Update functie calculeert de nieuwe X en Y coordinaten,
De Draw functie update vervolgens je div style.
en ScrollContainer update de div style van de container.

Helaas zie ik nu tijdens het lopen mijn mannetje een beetje achterlopen en terugschieten telkens (maar 1 pixel per keer ofzo, maar toch). Als ik de Draw en ScrollContainer omdraai krijg ik het omgekeerde: dan lagt de container :(

Nu vroeg ik me af of er iets was dat ik bijvoorbeeld de browser vertel om niks te updaten, dan de styles aan te passen, en als ik overal mee klaar ben pas alle posities te updaten ?
Het hoeft alleen maar in IE te werken (is ergens in ge-embed)...

Alvast bedankt,
TB

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


  • André
  • Registratie: Maart 2002
  • Laatst online: 15-04 09:54

André

Analytics dude

Dat kan dus niet, op het moment dat jij een aanpassing aan een style doet zal de browser dit direct uitvoeren. Je zult dus wat zaken moeten scheiden zodat zware aanpassingen de rest niet vertragen.

Verwijderd

Ik weet niet van welke functies jij gebruik maakt.
Maar ik heb ooit eens een tijdwinst van 80-90 % gerealiseerd door een lijn i.p.v. een DOM methode de functie innertHTML te verplaatsen.
Het is natuurlijk wel smeriger, maar het werkte in mijn geval goed.

De dom-methode was aardig gestroomlijnd, en ging wel snel, maar door innerHTML ging het nog sneller. Vooral omdat de dom-methode per div (in mijn geval 1px bij 1 px) opnieuw moest beginnen.

Kijk hier ook eens: W3C DOM vs innerHTML

  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
Hmmmm, InnerHTML is worth a try...

Op die pagina bij InnerHTML2 hebben ze het over "Push strings into array, then join array",
Bedoelen ze daarmee dat ik gewoon een array moet bijhouden, daarop objecten pushen (dus array.push("<div style='...'></div>")) en dan .join en innerHTML = result moet doen ?

Alvast bedankt,
TB

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


Verwijderd

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function inner2()
{
    removeTable();
    var time1 = new Date().getTime();
    var string = new Array();
    string.push('<table><tbody>');
    for (var i=0;i<50;i++)
    {
        string.push('<tr>');
        for (var j=0;j<50;j++)
        {
            string.push('<td>*</td>');
        }
        string.push('</tr>');
    }
    string.push('</tbody></table>');
    var writestring = string.join('');
    document.getElementById('writeroot').innerHTML = writestring;
    var time2 = new Date().getTime();
    doTiming(5,time1,time2);
}

Dit staat er in de bron van de pagina.
En inderdaag: string.push("je ding");

[ Voor 17% gewijzigd door Verwijderd op 25-12-2005 14:29 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
Ai, excuses!
Had ik zo even over het hoofd gezien :/
Maar vond dit eigenlijk niks met webdesign of graphics te maken hebben, gaat volgens mij meer over programmeren ;)

Anyway, Ik heb InnerHTML geprobeerd: IE averaged rond de 25% van CPU. mn oude methode: average van 11% (als het poppetje beweegt)...
Niet echt een verbetering :/ maar alsnog bedankt voor de tip...

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


Verwijderd

Welke code gebruik jij dan?
Zou je die eens willen posten, eventueel versimpeld?
Dan kunnen wij hier kijken of er ook nog optimalisaties mogelijk zijn misschien.
Pagina: 1