Beiträge von Sempervivum

    Interessantes Problem. Die einzige Lösung, die mir einfällt, ist, die rote Karte in zwei Dreiecke diagonal aufzuteilen, dann kann man die Abdeckung getrennt steuern. Erzeugen der Dreiecke:

    • Durch CSS und clip-path. Nachteil: Nicht unterstützt durch IE und Edge.
    • Durch SVG und clipPath. Wird laut caniuse durch alle gängigen Browser unterstützt. Am besten mit einer Bibliothek wie svg.js, dann kann man die einzelnen Karten und Dreiecke einheitlich leicht in einer Schleife anlegen.

    Die Größe der Boxen kannst Du über flex-basis, flex-grow und flex-shrink bzw. die Kurzform flex steuern, auch so, dass sie unterschiedlich breit werden. Unter dem Link auf HTML-Seminar wird das erklärt.

    Und sofern sich ein Text auf das Bild bezieht, eine Beschreibung o. ä. dazu ist, bietet sich die Verwendung des figure-Tags an:

    https://wiki.selfhtml.org/wiki/HTML/Text…urierung/figure

    Versuche am besten, einen Entwurf mit Flexlayout zu machen und wenn dann etwas nicht funktioniert wie gewünscht, poste den Code wieder, damit man es sich ansehen kann.

    Wenn es die Entwicklung von Spielen geht, ist meine Erfahrung allerdings sehr begrenzt, vor allem wenn es um die Performance bei hunderten von Objekten geht.

    Wenn Du mich unter dieser Einschränkung fragst, wie ich es machen würde, dann genau so, wie Du es jetzt machst, mit einer Bibliothek wie jCanvas.

    Zitat

    Die Objekte können verschwinden wenn man sie zerstört, müssen also schon als Objekt selbst ansprechbar sein.

    Das ist bei jCanvas der Fall, Du kannst ein Objekt über seinen Namen ansprechen oder über seinen Index.

    Zitat

    Wenn ein Objekt von Typ 2 zerstört wurde soll genau dort ein Objekt von typ 1 erstellt werden.

    Das ist relativ einfach, denn Du kannst die Position nach x und y für das alte Objekt vor dem Zerstören abfragen und dann das neue genau dort platzieren.

    Auch mit Flash habe ich überhaupt keine Erfahrung und kann deshalb auch keine Vergleiche ziehen.

    Zitat

    Ich glaube da kann man auch ganz anders ansetzen als wir es bisher getan haben oder?

    Ein ganz anderer Ansatz wäre, auf jegliche Bibliotheken zu verzichten und die Animationen mit requestAnimationFrame "zu Fuß" zu programmieren. Ich kann allerdings nicht voraussagen, ob man da wesentlich an Performane gewinnt.

    Ich glaube, so annähernd verstehe ich jetzt, wie das funktioniert.

    Zitat

    da nicht 14 Bloons erstellt werden, sondern nur einer.

    Dann versuche mal dieses:

    Zitat

    Das ist Gameplaytechnisch aber doch ziemlich doof.

    Warum denn das?

    BTW:

    Zitat

    da es reicht die Bildschirmgröße minimal zu verändern damit nichts mehr funktioniert.

    Das hat mir gestern Abend auch Kopfzerbrechen bereitet. Das Problem ist, dass Du mit CSS die Größe des Canvas verändert hast. Dass dabei die Auflösung leidet, ist in diesem Fall das kleinere Problem, aber der klick-sensitive Bereich ändert sich dabei nicht mit, so dass betr. Event nicht feuert.

    Ja, auf den ersten Blick scheint es komplizierter zu sein, aber wenn man sich an die Denkweise von jCanvas gewöhnt hat, ist es einfacher als mit Timern oder animationFrame.

    Ich habe mal das Skript levels.js umgearbeitet und jetzt läuft der Bloon einwandfrei und geschmeidig. Auch wenn ich die Konfiguration auf zwei Bloons erweitere, funktioniert es:

    Ich bin der Meinung, dass es relativ kompakt ist, man muss sich nur an den rekursiven Callback gewöhnen, aber der wird häufig verwendet, auch bei Animationen mit jQuery,

    t ist die Dauer der Animation. Du kannst eine Funktion schreiben, die diese berechnet:

    Code
    function getDuration(v, x1, y1, x2, y2) {
        var t = hypot(x2 - x1, y2 - y1) / v;
        return t;
    }

    und diese dann bei der Animation aufrufen: