CSV per JavaScript einlesen

Allgemein, Code, JavaScript No Comments »

Geht nicht? Geht doch! Ist eigentlich ganz einfach. Dazu braucht man nur einen WebServer z.B. Apache, einen einigermaßen aktuellen Browser und etwas Phantasie.

Schritt 1 - Wir brauchen XHMLHttpRequest:

/* private */ function /* XMLHttpRequest */ getRequest() {
	var request = null;
	if (window.XMLHttpRequest) {
		request = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		request = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		alert("Current Browser has no XMLHttpRequest object!");
	}

	return request;
}

Es lebe der Standard. Da das Web eh so überaus standardisiert ist brauchen wir nur eine Browser-Weiche. Der IE 6 kennt das Objekt nicht, deswegen müssen wir Ihm sagen, das er es doch kann und zwar mit einem ActiveX-Objekt. Der IE 7 soll das XMLHttpRequest Objekt wohl kennen, wurde ja auch Zeit.

Schritt 2 - Wir holen uns die Daten auf dem WebServer:

/* public */ function /* void */ sendDataRequest() {
	var request = getRequest();

	if (null == request) {
		alert("Cancel");
		return;
	}

	request.open("GET", "data/base.csv", true);
	request.onreadystatechange = function() {
		switch (request.readyState) {
			case 4:
				if (request.status != 200) {
					onError();
				} else {
					onSuccess(request.responseText);
				}
				break;

			default:
				return false;
				break;
		}
	};
	request.send(null);
}

Wir bekommen den komplett Inhalt der Datei als String in die Methode onSuccess(text) überliefert. Jetzt können wir allen möglichen Unfug damit anstellen ;-)

Kameraverfolgung mit Dämpfung

Code, Java, Mathematik, Tipps No Comments »

Für mein aktuelles Freizeitprojekt, ja ich bin ein Hobby-Spiele-Entwickler bzw. versuche einer zu sein, wollte ich eine Kamera haben die dem Ziel folgt. Allerdings soll der Kameraschwenk nicht statisch sein (1:1) sondern je nach Geschwindigkeit des Ziels etwas an Dynamik gewinnen. Da man das Rad nicht 100k mal neu erfinden möchte, sucht man halt nach einigen Code-Schnippseln. Meine Suche hatte erfolgt ;-)

void update(float delta) {
    Entity target = getTarget();
    Entity camera = getCamera();
    final float threshold = ...;
    final float feelFactor = ...;

    Vector2f difference = target.getPosition().sub(camera.getPosition());
    float distance = difference.length();

    if (distance > threshold) {
        Vector2f direction = difference.norm();
        float speed = (distance - threshold) * feelFactor;

        Vector2f newPosition = camera.getPosition().add(direction * speed);

        camera.setPosition(newPosition)
    }
}

Das Fragment ist eigentlich selbsterklärend. Falls jemand Hilfe dabei braucht, ihr habt die Kommentar-Funktion :-)

WP Theme & Icons by N.Design Studio
Entries RSS Comments RSS Anmelden