Og jeg ville høre hvordan folk synes koden er, altså om selve måden at kode det på er den bedste. Eller hvordan skal jeg gøre - har jeg tænkt rigtigt :-)
[ Og jeg ville høre hvordan folk synes koden er, altså om selve måden at kode det på er den bedste. ] I dette tilfælde synes jeg ikke, at man kan sige, at en anden kode ville være bedre og heller ikke dårligere for den sags skyld... Det ville mere være, hvis der var noget replace, noget gennemløb af elementer, nogle flere nodeelements der skulle tilføjes og/eller fjernes, og på hvilken måde dette så skete (innerHTML vs. DOM), at man kunne sige, noget om måden koden fungerer på var god eller dårlig.
- M.h.t. håndteringen af variabler vil jeg nok knytte nogle forbindelser oppe i funktionen start() istedet for init() - jeg tænker bl.a. her på forbindelsen du laver for hver 100ms til bat og bold selvom js allerede har tildelt denne forbindelse... Ved ikke hvor stor/lille effekt det har...
- Så ville jeg nok skrive if sætningerne lidt ned (i kortere format).
- Jeg ville nok også i start definere nogle offsetWidth og Height på bold og bat og ændre js koden, så jeg checkede på udregninger baseret på disse, så jeg kunne nøjes med at ændre i stylesheet istedet for i selve js koden.
- Jeg ville nok kode timeout værdien om i en variabel, så jeg kunne skrue op eller ned for hastigheden.
- Denne her: <div id="new" onClick="window.location.href=''">Nyt Spil</div> Ville jeg rette til denne her: <div id="new" onClick="window.location.reload(true);">Nyt Spil</div>
- Og så ville jeg i starten af init definere korte variabler til offsetLeft og Top på bat og bold, så js har variablerne istedet for, at den skal checke dem, hver gang den skal bruge dem. Ved ikke hvor meget/lidt det betyder...
(OT: - Jeg ville nok sørge for at boldens bredde og højde ville kunne komme til at passe så den ramte lige på højre kant (495%15 = 5 pixel den ryger uden til)... og evt. rette bat'et til så den ligeledes kørte op lige når den ramte battet... og måske putte det antal pixels der lægges til ind i en variabel også og så skifte variablen baseret på en random når den rammer en væg...)
[ Eller hvordan skal jeg gøre - har jeg tænkt rigtigt :-) ] ... Jeg håber det var det du tænkte på m.h.t. koden - du har jo tænkt rigtig... koden virker jo ... og så længe en kode virker, er den aldrig "rigtig" forkert, den kan måske gøres kortere eller mere effektiv, men det gør den ikke forkert (med mindre vi havde talt om innerHTML vs. JSDOM/XMLDOM, så er der jo ikke tvivl om, hvad der bør/skal benyttes i fremtiden) :)
mclemens: mange tak for den grundige gennemgang, ja jeg vil gerne have den til at ramme præcist, men skal jeg så lave en div som får defineret bredde og højde med nogle variabler alla (boldbredde*boldbreddeantal) ??? Mht. if'erne hvordan ville du så korte dem ned ? O:-)
Og forresten min "MoveBat" funktion. Er der en anden måde at lave den på, så battet flytter sig mere flydende? For specielt i FF skal man trykke hver gang battet skal rykke sig, der kan man ikke bare holde knappen nede som i IE.
kigger på det iløbet af idag... der er lidt problemer med at ff opfatter border som en del af elementet når man tager offsetTop og offsetLeft derfor hjalp det at lave det uden border's (måske senere kan man sætte en ekstra wrapper div omkring elementer der skal have en border) men hurtigst var lige at slette baggrunden og køre baggrundsfarve, indstille +10 / -10 til +5 / -5 og sænke interval for at holde samme hastighed... kigger lige på if sætninger, variabel håndtering og bat inden jeg poster...
Ikke helt i FF der smutter den et par pixels skævt i forhold til i IE, hvis man ikke sletter borderen også... da den regnes med som jeg nævnte - men evt. en border om selve div'en der måles på senere...
Point og Liv tæller kan jeg godt selv lave ;o) Lige nu vil jeg bare lave en grundskitse som jeg kan arbejde videre på, men den skal helst være i orden fra starten af :-D Men hvis jeg nu sletter border og i stedet sætter en background-color:#000; på så burde den vises ens?
PS: Ja jeg vil hellere bruger background-color end backgound, men den diskution har vi haft før ;D
[ Ja jeg vil hellere bruger background-color end backgound ] - den retter du jo bare ;)
[ Men hvis jeg nu sletter border og i stedet sætter en background-color:#000; på så burde den vises ens? ] - Jeps det var det jeg gjorde :) ... dog gjorde jeg så man kan nøjes med at ændre i stylesheet (dimenensioner istedet for i scriptet... det skal bare ved "modulus" med 5 give 0 :)
[ For specielt i FF skal man trykke hver gang battet skal rykke sig, der kan man ikke bare holde knappen nede som i IE. ] I min FF går de fint??? ... - her er en kompact if i den... men den er jo ikke "bedre" end den mere overskuelig if ... den diskussion har vi vist også haft :)
function MoveBat(e){ e=e?e:window.event; bat.style.left=(e.keyCode=="37" && batl>0)?(batl-10)+"px":(e.keyCode=="39"&&(batl+batw)<banew)?(batl+10)+"px":batl; }
hold da op clemens.. tak for de mange gode svar... Men kan desværre først kigge på det i morgen. 1: Det er weekend 2: Pokal Classic var på tilbud i brugsen 3: Jeg har fri i morgen... ;o)
joh, når man trykkede på pil op/ned lavede den fejlen... kigger på det nu det er nok denne jeg har forkortet lidt skævt... function MoveBat(e){ e=e?e:window.event; batv=(e.keyCode=="37")?-5:(e.keyCode=="39")?5:0; }
Hmm, har testet i både IE 6.0 og FF 1.5.0.1 den bevæger sig ikke, når jeg ikke trykker på noget...
- Hvad version FF bruger du webstuff? - Er det i den version jeg postede? - Hvis du ændrer keyCodes på venstre/højre taster til noget andet hjælper det så? ... kunne måske være noget med keyCode på den FF du kører - eller det system du bruger :/
Jeg kører; Linux@FF Jeg prøver lige at ændre det til 38 og 40 i stedet, kan jo godt være mine taster der er i udu :-) Jeg tog først hele den version af spillet du postede, og bagefter den modificerede udgave af MoveBat()
Den smutter ingen steder her :/ ... undskyld jeg først svarer nu webstuff... vi prøver at fejl checke - det skulle jo helst også virke på linux :/ ... det er nok bedst at checke hvad værdierne siger (alerts) og om de ændres... jeg har også lige rettet batl -> batl+"px"; det havde jeg ikke gjort før - ved ikke om det hjælper lidt på linux'en...
Hmm, det typer på offsetLeft ikke bevares til 200px... hvis der nu havde været en 1px border eller måske 1px padding sat på gav det fin logik... kan dog ikke se hvorfor ellers... nåh, anyhow har ikke linux men prøv lige at se om denne hjælper... har lavet lidt mellemrum ved rettelsen
<script type="text/javascript">
var bane, baneh, banew, bat, batw, bath, bold, boldw, boldh, vertical, horisontal; batv="";
[ Nej kører ikke med border, her er hele mit script pt: ] ^ Fyh, skam dig ... check din bane css ;) - lægger ligge borderen ind på en anden måde... det er "meget" lettere...
Beautifull mclemens... Så virker det jo som bare pokker.. Vi kom godt nok lidt væk fra det oprindelige spørgsmål - men tak for hjælpen.. Lægger du et svar? PS: Hæver den lige til lidt flere point....
[ Det kan du bande på :-) ]Lækkert :) - og tak for point :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.