2017-05-10 5 views
0

Ich lerne Python durch Pythonista auf dem iPhone. Das erste, was ich gemacht habe, war einen einfachen Touchscreen-Joystick (Controller) zu machen. Ich fange an, am eigentlichen Spiel zu arbeiten, aber ich weiß nicht, wie man die 2 Szenen zusammenführt oder überlagert. (Eines ist das eigentliche Spiel, das andere ist der Controller, den ich in einer anderen Datei erstellt habe.) Ich habe bereits versucht, es zu importieren und auszuführen, aber es scheint, als könnte nur 1 gleichzeitig ausgeführt werden, die Controller-Datei oder die Spieldatei. Jede Hilfe wird geschätzt.Mehrere Szenen in Pythonista laufen

+0

Ich glaube nicht, dass es eine Möglichkeit, Szenen zu überlagern ist. Selbst wenn Sie könnten, würde es bedeuten, dass mehrere Ereignisschleifen gleichzeitig ausgeführt werden und sich gegenseitig in die Quere kommen. Sie müssen die anderen Spielobjekte neben dem Controller in derselben Szene implementieren. –

+0

@SimonHibbs Also, wie würde ich dann ein komplexes Spiel machen? Es scheint so chaotisch zu sein, einfach jedes Mal, was ich brauche, auf eine touch_moved() - Funktion zu verzichten. – BrrrIce

Antwort

0

Ich werde versuchen, eine vollständigere Antwort als mein Kommentar oben zu präsentieren.

Jede Szene, die präsentiert wird, hat eine Ansicht und eine Reihe von Methoden, um auf Berührungsereignisse in dieser Ansicht zu reagieren. Sie können keine Szenen übereinander legen und beide reagieren auf Berührungsereignisse, da dann zwei verschiedene Touch-Ereignishandler für dieselben Berührungsereignisse auslösen.

Sie sollten jedoch in der Lage sein, mehrere Szenen zu erstellen, die keine überlappenden Ansichten haben. Dann wird jedes Berührungsereignis nur von der Szene erfasst, die den Bereich des Bildschirms besitzt, den Sie berühren.

Sie können eine Szene überlagern, aber die 'overlay' scene erfasst alle Touch-Interaktionen.

+0

Danke für die Hilfe. Allerdings fand ich es nützlicher, einfach eine andere .py-Datei, die ich mit dem Joystick gemacht habe, zu importieren, dann als ein Modul in das Hauptspiel einzufügen und dann einfach die Funktionen davon zu benutzen. Es bringt es auf 1 Zeile in meinem Hauptspiel, was besser ist. – BrrrIce

0

Anstatt den Joystick auf eine separate Szene zu setzen, sollten Sie ihn auf eine scene.Node zeichnen. Dann können Sie es in Ihrer Spielszene wie ein anderes Sprite hinzufügen, indem Sie Scene.add_child() verwenden.

Um die Berührungspositionen zu den Knoten Koordinatensystem zu umwandeln, Sie Node.point_from_scene() verwenden können, und koordinieren, die zur Umwandlung zurück System auf die Szene, die Sie verwenden Node.point_to_scene()