Chat
Degec
ExtraautistaVilágtólElzárkózottHekkerközösség
FrissVáltozások
HardverTörténet » TémaKatalógusAdminisztrációTéma
EztRajzoltuk
FilozófiaTéma
HarcművészetTéma
HumorTéma
InfoTéma
IrodalomTéma
JátékTéma
ProgramTéma
SajátLap
ZeneTéma » SajátLapAisha
Banya1987
Beucica
Descant
GillyDani
Grizli
GrádMiki
Raine
RigorMortis
SAdam
SurányiGergő
UPi
Ulmar
Virág
VágvölgyiAttila
Vágvölgyi Attila » UPiSzavazás/44
UPiBlog
UPiPortugáliábaMegy
UngárPéter
Vallomás » UPiBlog » /2009-10-16
Van egy furcsa dolog az informatikában: a forráskód idővel elgyomosodik. Erre a jelenségre van ugyan magyarázat, de a magyarázat egyrészt bonyolult, másrészt nem segít a gyomosodást megakadályozni. Gyomosodás egyszerűen van.
Mivel a gyomosodásra nincs ellenszerünk, viszont mégse jó, ha a kertünk (forráskódunk) tele van dudvával, ezért a megoldás az, hogy a kertész (programozó) rendszeresen gyomlál. Ezt nem kampányszerűen kell csinálni, hanem nap mint nap, a normális fejlesztés részeként. Fejlesztesz, hopp, ott van egy kis gaz, gyorsan eltünteted, fejlesztesz tovább.
Erre mutatnék egy gyors példát most, a CitiesOfApocalypse közben jött elő. A rövid történet az, hogy Descant ötlete nyomán megcsináltam, hogy az iránygombokkal lehessen scrollozni a térképet; ehhez pedig elengedhetetlen volt, hogy a billentyűlenyomásokat elkapjam. De nem akarom őket elkapni mindig (pl amikor a játékos a chatbe írogat), hanem csak olyankor, amikor az egér a játék felett van.
Erre született a következő kódocska, ami a betöltéskor fut le:
this.gameDiv.onmouseover = function() { window.onkeydown = onkp; }; this.gameDiv.onmouseout = function() { window.onkeydown = null; };
Eddig szép és jó minden, működik minden* böngészőn, maga a csoda. Igenám, csakhogy van egy Internet Explorer nevű csapás a webfejlesztésre; a csapás részeként mindent másképp kell csinálni, hogy IE-n is működjön. Egy ponton nekiláttam IE-kompatibilissá tenni a játékot (ami végül nem sikerült), és sok egyéb mellett a következő változást eszközöltem:
this.gameDiv.onmouseover = function() { if (isInternetExplorer()) { document.body.onkeydown = onkp; } else { window.onkeydown = onkp; } }; this.gameDiv.onmouseout = function() { if (isInternetExplorer()) { document.body.onkeydown = null; } else { window.onkeydown = null; } };
Hurrá, most már IE-n is működik (a kódnak ez a része). Mentem is tovább sietve, mert még volt ötezer másik rész, amitől az IE fejreállt. Sajnos, azon igyekezetemben, hogy legyen IE változat, hagytam magam mögött egy kis gazt. Pár héttel később egy másik változtatás közben gyomláltam ki, íme:
if (isInternetExplorer()) {
this.gameDiv.onmouseover = function() {
document.body.onkeydown = onkp;
}
this.gameDiv.onmouseout = function() {
document.body.onkeydown = null;
}
} else {
this.gameDiv.onmouseover = function() {
window.onkeydown = onkp;
}
this.gameDiv.onmouseout = function() {
window.onkeydown = null;
}
}
Mi változott? Az eseménykezelő egyszerűbb lett,
mert az if/else rész átkerült az inicializációs kódba;
ettől lesz szebb (pontosabban, kevésbé gazos) ez a kódrészlet.
A szomszédságban
Korábbi bejegyzések
Guestbook
ltd@gossipingm.comclacking@sistersa.ng
rhodes@streaking.homespunz.com
bracelet@unread.certificatingg.ci
cheapened@rangyd.so
edam@sleazierh.org
snorer@daydreamed.impactsa.com
ampules@camerae.whitishg.org
unanimous@lesothor.int
boneyest@chastening.tighteny.mil
rationed@creativenessq.com
ubiquity@bleedj.cf
sleepwear@undertakesi.com
staving@withdrawalsd.pg


![Validate my RSS feed [Valid RSS]](/Content/Images/valid-rss.png)
Még nincs hozzászólás