That Guy
Meubilair
- Lid geworden
- 28 nov 2006
- Berichten
- 5.010
beste javascripters,
Ik hoop niet dat iemand ontmoedigd raakt deze vraag te beantwoorden door de lengte.
Ik zit met een probleem en ik kan niet achter de oplossing komen. Omdat het nogal veel code is (1000+ regels) is het nutteloos het allemaal te plaatsen, maar ik zal even de belangrijkste dingen erbij zetten.
Ik ben bezig met een javascript 'tile' engine, welke met een 16x16 map van divjes werkt en ik steeds de background aanpas via javascript. het werkt allemaal perfect. Maps laden goed en ik kan de player bewegen.
bewegen doe je met de pijltjes ( <- en -> en v en ^ ). Als je op 1 van de tiles klikt zie je in de debug de locatie x en y en de tile's graphic en 'trigger' (graphic,trigger) en daarna de 'i' locatie. (alle div's hebben een nummer).
Javascript heb ik allemaal omgezet naar wat meer OOP achtige stijl. Eerst had ik alles met losse functies en variabelen, en had ik precies hetzelfde probleem.
Mischien een beetje verwarrend, maar het staat hier online: www.vegras-studios.com/X/tile/ (!!! alleen te zien met FF, IE werkt niet goed....!!!)
Hier even wat code:
deze wordt aangeroepen door deze code:
tot zover werkt het dus. Een mapchange werkt zo:
dit wordt getriggerd. De Game-constructor:
functie DisplayMap werkt 100% goed.
het eigenlijke probleem:
Als ik naar een nieuwe map ga, wordt dit dus mooi getekent, MAAR de player wordt niet op de nieuwe locatie geplaats, en blijft dus op de plek van de oude map.
Ook dit werkt niet:
en ook
werkt niet.
Als je naar de nieuwe map gaat, zie je 2 alerts: de 1e is de oude player's locatie (Player.loc) en de 2e is de Player.loc NA de Player.setloc(32) call.
Bovendien wordt er dus wel een 'player' getekent op 2,2 (i=32) maar deze is niet te 'besturen'.
Alvast heel erg bedankt,
V. :thumb:
Ik hoop niet dat iemand ontmoedigd raakt deze vraag te beantwoorden door de lengte.
Ik zit met een probleem en ik kan niet achter de oplossing komen. Omdat het nogal veel code is (1000+ regels) is het nutteloos het allemaal te plaatsen, maar ik zal even de belangrijkste dingen erbij zetten.
Ik ben bezig met een javascript 'tile' engine, welke met een 16x16 map van divjes werkt en ik steeds de background aanpas via javascript. het werkt allemaal perfect. Maps laden goed en ik kan de player bewegen.
bewegen doe je met de pijltjes ( <- en -> en v en ^ ). Als je op 1 van de tiles klikt zie je in de debug de locatie x en y en de tile's graphic en 'trigger' (graphic,trigger) en daarna de 'i' locatie. (alle div's hebben een nummer).
Javascript heb ik allemaal omgezet naar wat meer OOP achtige stijl. Eerst had ik alles met losse functies en variabelen, en had ik precies hetzelfde probleem.
Mischien een beetje verwarrend, maar het staat hier online: www.vegras-studios.com/X/tile/ (!!! alleen te zien met FF, IE werkt niet goed....!!!)
Hier even wat code:
PHP:
//js
//korte versie van player.js...
function c_Player(Pname,Ploc,Pfacing){
this.name = Pname;
this.loc = Ploc;
this.facing = Pfacing;
this.setloc = function(xloc){
this.loc = xloc;
}
this.drawplayer = function(loc){
var retval = "url( // hier staat een url naar het plaatje van het mannetje // )";
document.getElementById(loc).style.background = retval;
this.loc = loc;
}
// (...)
PHP:
//js
var Player = new c_Player('TestGuy',Game.startloc,Game.startfacing);
tot zover werkt het dus. Een mapchange werkt zo:
PHP:
//js
Game.updatemap(map2);
PHP:
//js
function c_Game(Pmap,playerstart,Pstartfacing){
this.map = Pmap;
this.startloc = playerstart;
this.startfacing = Pstartfacing;
DisplayMap(this.map.mapArray,this.map.bg);
this.updatemap = function(Pnewmap){
this.map = Pnewmap;
DisplayMap(this.map.mapArray,this.map.bg);
}
}
het eigenlijke probleem:
Als ik naar een nieuwe map ga, wordt dit dus mooi getekent, MAAR de player wordt niet op de nieuwe locatie geplaats, en blijft dus op de plek van de oude map.
Ook dit werkt niet:
PHP:
//js
Player.setloc(32)
PHP:
//js
Player.drawplayer(32)
Als je naar de nieuwe map gaat, zie je 2 alerts: de 1e is de oude player's locatie (Player.loc) en de 2e is de Player.loc NA de Player.setloc(32) call.
Bovendien wordt er dus wel een 'player' getekent op 2,2 (i=32) maar deze is niet te 'besturen'.
Alvast heel erg bedankt,
V. :thumb:
Laatst bewerkt: