Seite 1 von 1
brython skuplt pypy.js
Verfasst: Sonntag 17. Mai 2020, 14:25
von The Hit-Man
unter brython habe ich versucht auf phaser.io zuzugreifen um mal nen kleines spielchen zu basteln. ich war auch schon dabei, einige sprites anzeigen zu lassen. weiter habe ich mich mit brython noch gar nicht richtig beschäftigt. so manche sachen, verstehe ich einfach noch nicht.
kann ich mit brython auf jede javascript zugreifen, die ich einbinde, in der html.index? oder denke ich da ganz falsch? von skulpt habe ich auch flüchtig etwas gelesen, das müßte doch fast das gleiche sein, wie auch brython? pypy.js verstehe ich jetzt mal gar nicht. habe nur mit bekommen, das es recht groß sein soll wenn man es mit in seine html seite mit ein bindet.
die sache ist einfach die ... ich wollte jetzt nicht unbedingt javascript nehmen um ein HTML5 spielchen zu basteln. da wäre mir python im browser echt lieber. stehe jetzt aber vor dem problem, was ich da am besten nehmen sollte? vielleicht habt ihr da ein paar tips.
unter brython fand ich es toll, das ich auf die game-engine phasio.io zugreifen konnte. nun hing ich aber da fest, dem sprite ein click event zu verpassen und habe mich da stunden lang mit aufgehalten und bin immer noch nicht weiter.
jetzt wollte ich, bevor ich noch länger da dran rum fummel, euch fragen ob skulpt oder pypy.js da nicht besser geeinet wären und eben die frage ob ich mit brython auf alle javascript libs zugreifen kann, die ich eben in die html seite mit ein binde.
hat da jemand erfahrung gemacht? ich finde da leider nicht wirklich was drüber im netz.
wäre für jede hilfe dankbar.
oder ist mein ansatz vielleicht ganz falsch.
Re: brython skuplt pypy.js
Verfasst: Sonntag 17. Mai 2020, 14:40
von __blackjack__
Also ich würde da ja eher JavaScript direkt nehmen oder eine Sprache die semantisch davon nicht so weit weg ist und sich zu JavaScript kompilieren lässt. CoffeeScript beispielsweise.
Re: brython skuplt pypy.js
Verfasst: Montag 18. Mai 2020, 06:26
von The Hit-Man
vielleicht kann mir jemand besser helfen wenn ich mal den code mit bei lege. also wie gesagt, das sprite wird mir angezeigt und rotiert auch, so wie ich es will. jetzt müßte da ein click-event einbauen, was ich auch versucht habe. aber der listener wird nicht angesprungen.
kann da jemand helfen?
Code: Alles auswählen
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="https://cdn.jsdelivr.net/npm/phaser@3.22.0/dist/phaser-arcade-physics.min.js"></script>
<script type="text/javascript" src="js/brython.js"></script>
<script type="text/javascript" src="js/brython_stdlib.js"></script>
<style>
body {
background-color: grey;
}
canvas{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
</style>
</head>
<body onload="brython()">
<script type="text/python">
from browser import window, document
import javascript, random
Phaser = window.Phaser
class Game(object):
def __init__(self):
window.console.log("game-init")
self.game = window.Phaser.Game.new(
{
'type': Phaser.AUTO,
'width': 250,
'height': 250,
'scene': {
'preload':self. preload,
'create': self.create,
'update': self.update
}
}
)
def preload(self, *agrs):
this = javascript.this ()
this.load.image('red', 'res/images/red.png')
this.load.image('green', 'res/images/green.png')
this.load.image('yellow', 'res/images/yellow.png')
def create(self, *args):
this = javascript.this ()
self.counter=0
self.field1 = this.add.sprite (50, 50, 'red')
self.field1.on ('InputDown' ,self.listener, this)
# self.field1.events.onInputDown.add(destroySprite, this)
self.field1.inputEnabled = True
self.field1.input = True
self.field1.name='My-Sprite 1'
self.field1.setX=20
self.field1.rotation=0
self.field1.setScale (2)
# window.console.log (self.field1.texture.key)
# self.field1.visible=False
# self.field1.scaleX=5
# self.fields.add (self.field1)
# window.console.log (dir (self.field1))
window.console.log (self.field1)
# window.console.log (self.game.canvas.baseURI)
def update (self, *args):
this = javascript.this ()
self.field1.rotation=self.counter
self.counter = self.counter + .05
# window.console.log (self.field1)
def listener (self, *args):
this = javascript.this ()
window.console.log ('hier sollte der click an kommen')
GAME = Game ()
</script>
</body>
</html>
Re: brython skuplt pypy.js
Verfasst: Montag 18. Mai 2020, 08:22
von __deets__
Wenn ich dieses JavaScript this gefummele sehe, wird mir gleich wieder schummerig. Und genau da würde ich auch deine Probleme vermuten.
Re: brython skuplt pypy.js
Verfasst: Montag 18. Mai 2020, 09:05
von The Hit-Man
was ist denn da gefummelt? könnte bischen aufräumen, das stimmt. aber da sind ja auch viele sachen zum debuggen drin gewesen.
kannste denn helfen?
Re: brython skuplt pypy.js
Verfasst: Montag 18. Mai 2020, 09:10
von The Hit-Man
__blackjack__ hat geschrieben: Sonntag 17. Mai 2020, 14:40
Also ich würde da ja eher JavaScript direkt nehmen oder eine Sprache die semantisch davon nicht so weit weg ist und sich zu JavaScript kompilieren lässt. CoffeeScript beispielsweise.
mhmmmm, das kenne ich gar nicht. würde aber echt am liebsten unter python bleiben.
Re: brython skuplt pypy.js
Verfasst: Montag 18. Mai 2020, 09:24
von __deets__
Gefummelt ist das hier: this = javascript.this () Das ist nicht deine Schuld, aber das zeigt sowohl Schwaechen in JS (wo this ein ewiger Dorn ist), als auch in dem Versuch, die beiden Sprachen und ihre unterschiedliche Semantik miteienander zu verheiraten. Das knirscht halt.
Und ich habe dir versucht zu helfen, indem ich dich auf dieses Thema hingewiesen habe, und die Vermutung geaeussert, dass eine Problemquelle darstellt. Denn das war es schon immer mit JS, wo "this" das angeklickte Element war, und nicht das Objekt, dessen Methode man als callback gesetzt hat.
Wenn du unter Hilfe aber nur verstehst, dass man sich mehrere Stunden in ein Game-Framework und eine Transpiling-Loesung einarbeitet, um ein nicht vollstaendiges Beispiel zum laufen zu bringen - nein, das werde ich nicht machen.
Re: brython skuplt pypy.js
Verfasst: Montag 18. Mai 2020, 09:52
von __blackjack__
@The Hit-Man: Wo ist denn "InputDown" dokumentiert?
Re: brython skuplt pypy.js
Verfasst: Montag 18. Mai 2020, 11:01
von The Hit-Man
__blackjack__ hat geschrieben: Montag 18. Mai 2020, 09:52
@The Hit-Man: Wo ist denn "InputDown" dokumentiert?
naja, ich hatte das außer phaser.io doku...
wie etwas hier:
https://labs.phaser.io/edit.html?src=sr ... s&v=3.23.0
aber pointerdown habe ich auch schon probiert ...
@ __deets__
ach, ich bin einfach völlig verwirrt, gerade ...