Nach einem Jahr des Studierens und Experimentierens mit Trial-and-Error fühle ich, dass ich anfange, JavaScript ein wenig mehr zu verstehen. Also, jetzt, ich möchte versuchen, ein einfaches 2D-Plattformspiel zu schreiben (denke Super Mario World oder Sonic the Hedgehog). Dazu werde ich die EaselJS-Bibliothek einsetzen.
Ich versuche herauszufinden, wie ich mit Hilfe der linken und rechten Pfeiltaste die "Welt" innerhalb einer Leinwand bewegen / verschieben kann. Ich weiß, wie ich eine Funktion auf einem keydown
der Pfeiltaste ausführen kann, aber ich bin mir nicht sicher, wie ich mich dem Verschieben / Verschieben nähern sollte.
Sollte ich die Position / Koordinaten jedes einzelnen Gegenstandes in der Leinwand anpassen, wenn eine Taste gedrückt wird? Oder sollte ich vielleicht alles in einen Container legen und die Position / Koordinaten des Containers verschieben?
Ich werde alles schätzen, was mich in die richtige Richtung bringt. Tyvm:)
Mit Antwort aktualisiert Die Antwort unten bestätigte, dass ich tatsächlich alles in ein container , damit ich die Position dieses Containers festlegen kann. Dies ist der Code, den ich entworfen habe, und es funktioniert.
%Vor% Ich habe versucht, world.x
sowie world.regX
zu aktualisieren. Irgendwie scheint world.regX
glatter zu werden.
Ich denke, der beste Weg besteht darin, alle Anzeigeobjekte, die gescrollt werden sollen, in einen scrollableObjectContainer einzufügen (vielleicht haben Sie statische Elemente wie die Lifebar).
Wenn Sie sich also bewegen, aktualisieren Sie scrollableObjectContainer.regX.
Sie können tweenJS für ein sanfteres Scrollen verwenden.
Nur eine Idee ... aber werfen Sie einen Blick auf die Canvas-Übersetzungsfunktion und verwenden Sie sie zu Beginn jedes Neuzeichnens, um den Kontext festzulegen, aus dem alles andere gezeichnet werden soll.
Hier ist ein Beispiel von 2d Top-Down Scroll und Rotation nach einem Spieler.
Aber es läuft darauf hinaus:
%Vor%Dann geht alles einschließlich des Spielers in den World-Container und wird gedreht, während sich der Spieler bewegt. GUI muss nach Welt sein, also zieht es darüber.
Tags und Links javascript canvas html5-canvas easeljs