Beiträge von Sempervivum

    Paint erzeugt Bitmap-orientierte Grafikdateien. Nachteil dabei: Sie lassen sich nur eingeschränkt skalieren, abwärts mit geringem, aufwärts mit starkem Qualitätsverlust. Willst Du eine gute Qualität auch auf großen Bildschirmen musst Du eine große Grafikdatei bereit stellen mit entspr. großer Ladezeit.

    Die Alternative sind vektororientierte Grafiken. Diese lassen sich ohne Qualitätsverlust skalieren und damit an die Größe des Browserfensters anpassen. Außerdem ist die Dateigröße, jedenfalls wenn die Grafik nicht zu komplex ist, kleiner als bei Bitmaps. Der wohl bekannteste kostenlose Editor für Vektorgrafiken ist Inkscape.

    Interessante Aufgabe. Ich denke schon, dass das mit Javascript möglich ist.

    Zitat

    Fakt ist, das Spiel sollte letztendlich auch Internetfähig sein, also man sollte es schon zu zweit spielen können, auch wenn die Spielpartner nicht gerade nebeneinander sitzen.

    Das ist eine gewisse Herausforderung, aber sicher auch machbar. Vor allem, wenn man ein Verfahren verwendet, bei dem man nicht wie bei einem Video die Bewegungen Frame-für-Frame überträgt, sondern nur die Anfangsparameter wie Stoßrichtung und Stoßstärke und die Bewegungen dann auf der anderen Seite neu berechnet.

    Zitat

    Aber alles erstmal Schritt für Schritt.

    Das ist sicher zu empfehlen. Ich habe vor einiger Zeit mal den ersten Schritt getan und den elastischen Stoß programmiert:

    Den Ball links oben kann man durch Ziehen mit der Maus bewegen. Nach Loslassen rollt er weiter und wird entsprechend der Reibung langsamer. Und wenn man gut gezielt hat, trifft er den zweiten Ball. :)

    Das mit dem Ziehen und Loslassen trifft die Vorgänge beim richtigen Billard noch nicht optimal. Auf Anhieb fällt mir aber keine bessere und einfache Lösung ein. Ich dachte daran, eine Queue zu zeichnen, wo man die Richtung mit der Maus durch Ziehen einstellt und durch schnellen Klick den Stoß auslöst, aber optimal wäre das auch nicht.

    Zitat

    Bekomme das leider nicht hin, 'content' entsprechende IDs zu geben

    Das ist gar nicht nötig, weil #content ja das Ziel ist, wohin die Texte sollen und das ist immer das selbe. Wenn der Text jeweils im value-Attribut steht, wie in deinem Code, ist es ganz einfach:

    Code
    <script type="text/javascript">
    function changeContent(txt){
        document.getElementById('content').innerHTML = txt;
    }
    </script>
    <div id="content">Das ist der aktuelle Text....</div>
    <input type="button" value="alternativer Text 1" onclick="changeContent(this.value);"/>
    <input type="button" value="alternativer Text 2" onclick="changeContent(this.value);"/>
    <input type="button" value="alternativer Text 3" onclick="changeContent(this.value);"/>

    Wenn die Text etwas länger werden sollten, ist es eher zu empfehlen, sie in Variablen zu definieren und diese als Parameter an changeContent() zu übergeben.

    Das ist ja jetzt mysteriös, dass es auf einmal funktioniert, ohne dass wir etwas wesentliches geändert haben. Aber OK.

    BTW finde ich deine Frage, den API-Key zu verbergen, berechtigt. Ich habe mich häufig gefragt, warum man eine API mit einem Key absichert, wenn jeder ihn im Browser aus dem Javascript ablesen kann.

    Das sieht ja schon Mal gut aus! Dann sollten wir im JS weiter debuggen: Füge eine Consolausgabe ein:

    Code
                request.onload = function () {
                    var superHeroes = request.response;
                    console.log(superHeroes);
                    populateHeader(superHeroes);
                    // showHeroes(superHeroes);
                }

    Dann müssen wir mal debuggen. Schalte die Fehleranzeigen im PHP-Skript ein:

    Dann rufe es direkt im Browser auf ohne das Javascript.

    Aber das ist ja gerade der Sinn der Sache, dass der Key nicht mehr im Quelltext deiner Seite steht.

    Wie hast Du denn getestet? Auf deinem Webspace oder mit lokalem Webserver?

    Ich schrieb ja, dass ich es nicht getestet habe, es können also noch Fehler drin sein.

    Poste am besten erst Mal das neue Javascript und das PHP, Key kannst Du ja löschen.

    Wenn das so aussieht, ist es relativ einfach: Die URL brauchst Du nicht als Parameter. Statt direkt die API-URL zu lesen, ruft Du ein PHP-Skript auf deinem Server auf:

    getdata.php:

    PHP
    <?php
    $theurl ='die-url-der-API-mit-key';
    // die API auslesen
    $response = file_get_contents($theurl);
    // und den Inhalt ausgeben
    echo $response;
    // ginge auch mit einem Einzeiler,
    // aber so ist es IMO übersichtlicher
        ?>

    Die URL mit dem Key steht jetzt nur noch im PHP-Skript und das ist im Browser nicht sichtbar.

    Ungestestet aber ich bin relativ sicher, dass es so funktionieren wird.

    Ein PHP-Skript, das die API mit file_get_contents ausliest. Dann steht der Key nur im PHP-Code und der ist im Browser nicht sichtbar. Die Daten kannst Du dann gleich in PHP auswerten, wenn sie in HTML umgesetzt werden sollen, oder an ein Javascript übergeben, das sie clientseitig verarbeitet.

    Da sehe ich nichts von den Formular-Elementen. Mache ich diese auch inline funktioniert es:

    Zitat

    Das heißt, dass im Gegensatz zum statischen Layout das bei Flexbox automatisch mit einberechnet wird ? Wofür brauche ich dann box-sizing ?

    Bei dem, was Du mit Flexlayout gestaltest, brauchst Du kein box-sizing.

    BTW: Du brauchst auch die 100% hier nicht:

    Code
                .content {
                    width: 100%;
                }
    
                .sidebar {
                    width: 100%;
                    margin-top: 20px;
                }

    denn ein Flexcontainer hat per Default die Eigenschaft align-items: stretch; d. h. bei Richtung column füllen die Items den Container in horizontaler Richtung automatisch aus.