Hauptmenü

Untermenü

OOP/DOM-Scripting JavaScript - Praxistutorial 3 - Karten tauschen Teil 2

1. Die Abschnitte

2. Weitere Event-Handler

So, jetzt können wir unsere Karten schön wegklicken, aber wie bekommen wir neue? Dazu muss unser "Haupt"-Event-Handler wiederum ergänzt werden.


document.getElementById('p_geben').onclick = function()
{
  ...
  document.getElementById('p_geben').style.display 'none';
  document.getElementById('p_swap').style.display 'block';
  document.getElementById('p_swap').onclick = function ()
  {
    for (05i++)
    {
      document.images['p' i].onclick = function () {}
    }    
    poker.swapCards();
  }
}  

Erläuterung

Zuerst verschwindet der "Karten geben"-Link und der "Karten tauschen"-Link wird eingeblendet. Also nichts Kompliziertes. Anschließend wird auf p_swap ein neuer Event-Handler gelegt. Klickt man auf besagten Link, so werden sämtlich Event-Händler auf allen Karten mit einer leeren Funktion belegt. So können sie nicht mehr ausgetauscht werden.

Einige werden sicher anmerken, dass wir dass schon der Methode dropCards gemacht haben. Falsch! Das galt nur für die ausgetauschten Karten, nicht für die, die wir behalten haben. Darum gehen wir hier auf Nummer sicher und machen das noch mal bei allen(!) Karten. Zu guter Letzt wird dann die Methode swapCards ausgeführt.

3. Die Methode swapCards


swapCards : function ()
{
  var newcards this.setCards (this.p_drop_cards.length);
  for (var 0newcards.lengthi++)
  {
    document.images[this.p_drop_cards[i]].src 'cards/' 
        newcards[i].replace(/#/, '') + '.png';
  }
  document.getElementById('p_swap').style.display 'none';      
}

Erläuterung

Das ist nun auch nichts mehr Weltbewegendes. Zunächst holen wir uns die neuen Karten. Die Anzahl und die Bildnamen haben wir ja in p_drop_cards abgespeichert. Dann werden wie gehabt die Bilder ausgetauscht, der Link "Karten tauschen" ausgeblendet et voilà, wir haben fertig.

4. Fazit

Dies war nur ein erster Einstieg in Literal-Objekte und besonders sinnvoll scheinen sie ja nicht zu sein. So ist keinerlei vernünftige Kapselung möglich, da sowohl alle Eigenschaften als auch Methoden öffentlich zugänglich sind. Aber wie arbeiten denn die großen JavaScript-Frameworks damit. Nun, dort wird diese Technik nur dann eingesetzt wenn man aus etwas kein Objekt erzeugen sondern auf ein bereits existierendes zugreifen möchte.

Meine Meinung

Seit nunmehr drei Jahren programmiere ich an einem Pokerautomaten herum, so wie er in Spielhallen herumsteht. Anfangs war es ein Projekt, das ich tatsächlich fertig stellen wollte. Aber mittlerweile nutze ich es, um die Vor- und Nachteile bestimmter Techniken auszubaldowern. Aufgrund meiner bisherigen Erfahrungen bin ich der Meinung, dass man Literale nur äußerst selten einsetzen sollte. Um mal auf dieses Beispiel zurückzukommen, die Konstruktorfunktion helper ist prädestiniert dafür, als Literal umgesetzt zu werden. Also wäre ich hier eigentlich völlig falsch vorgegangen. Wenn ich euch nicht zeigen wollte, wie Literale funktionieren.

Ausblick

Sollte ich tatsächlich mal mit meinem Pokerautomaten fertig werden, so wird es hier ein Monstertutorial geben, das alle(!) Bereiche beinhaltet. HTML/CSS, JavaScript/Ajax/ sowie PHP und MySQL. Aber bis dahin werden wohl noch einige Sommer ins Land ziehen.

zurück zum vorherigen Abschnitt