XML und Animationen
Verfasst: Dienstag 3. April 2012, 15:40
Hallo,
ich habe gerade ein kleines privates Projektchen "fertig" gestellt, dass ich jetzt aber unbedingt vorstellen möchte
(Release Early Release Often)
Hierbei handelt es sich um eine Animationsengine, die XML-Dateien parst um diese als Animationsabläufe darzustellen.
Das ganze steht derzeit unter der GPL lizenz, kann aber unter Rücksprache für einzelne auch umlizenziert werden.
Ich bin etwas schreibfaul, deswegen kopiere ich hier einen Teil der README.txt.
Das README-File beinhaltet die deutsche Dokumentation,
die im Laufe der nä. Tage noch überarbeitet und ins Englische übersetzt wird.
README.txt
Die Subversion:
http://orkah.de/websvn/
Vielen Dank und noch einen angenehmen Abend,
ix
ich habe gerade ein kleines privates Projektchen "fertig" gestellt, dass ich jetzt aber unbedingt vorstellen möchte

(Release Early Release Often)
Hierbei handelt es sich um eine Animationsengine, die XML-Dateien parst um diese als Animationsabläufe darzustellen.
Das ganze steht derzeit unter der GPL lizenz, kann aber unter Rücksprache für einzelne auch umlizenziert werden.
Ich bin etwas schreibfaul, deswegen kopiere ich hier einen Teil der README.txt.
Das README-File beinhaltet die deutsche Dokumentation,
die im Laufe der nä. Tage noch überarbeitet und ins Englische übersetzt wird.
README.txt
Code: Alles auswählen
EasyAni - A xml based animation scriptlanguage
Contact: Oliver Riehle
Website: -
Version: 1.0.0
Requirements
Python
EasyAni is compatible with python 2.7
Pygame
Get it from http://pygame.org or your package manager
Manual (GERMAN)
EasyAni ist eine XML basierte Animationsengine für computerspiele.
Gesteuert wird das ganze über die EasyAni-Klasse,
mittels derer man das Parsen von XML-Dateien oder Strings,
sowie das Anzeigen der daraus resultierenden Animationen veranlassen kann.
Animationen starten immer mit dem "animation" tag.
Tags auf gleicher Ebene werden soweit möglich "simultan" verarbeitet.
#### Implemented Tags:
animation:
Die Animation selbst.
Alle animationen beginnen mit diesem Tag.
Sämmtliche Animationsabläufe werden in seinem Bauch definiert
@param name:
der name Parameter ist der name über den die Animation später aufgerufen werden soll.
@param top: OPTIONAL
die position der Animation auf der Y achse des Koordinaten systems
@param left: OPTIONAL
die position der Animation auf der X achse des Koordinaten systems
image:
Der Image-Tag läd ein Bild und zeigt dieses an.
Transparenzwerte können leider nicht berücksichtigt werden,
da die SDL-Engine alpha per pixel und den alphakanal bei geladenen Bildern
nicht gleichzeitig unterstützt.
Es wird empfohlen mit dem colorkey zu arbeiten
Soll das Bild nicht sofort angezeigt werden kann man den Initialisationswert von alpha
auf "0" stellen.
Es ist zu empfehlen immer zuerst alle in der animation zu verwendenden Bilder gleich zu beginn
zu definieren. Dies macht es später einfacher eventuelle Fehler schneller zu finden.
@param src:
der Pfad zu dem Bild
@param name:
der Name des bildes, über den es in anderen Tags manipuliert werden soll.
Vorsicht, der Name ist eine Identifikationsnummer und kann nicht zwei mal vorkommen.
@param cut: OPTIONAL
Der sichtbare Bereich des Bildes.
Standartmäßig wird das gesammte Bild verwendet
left,top,width,height
@param top: OPTIONAL
die position des Bildes auf der Y achse des Koordinaten systems.
Entspricht "0" wenn nichts übergeben
@param left: OPTIONAL
die position des Bildes auf der X achse des Koordinaten systems.
Entspricht "0" wenn nichts übergeben
@param width: OPTIONAL
Die Breite des Bildes in die es skaliert werden soll
@param height: OPTIONAL
Die Höhe des Bildes in die es skaliert werden soll
@param alpha: OPTIONAL
Die Transparenz des Bilds
255 = Visible
0 = invisible
@param angle: OPTIONAL
der Winkel in dem das Bild gedreht werden soll von 0 bis 360
@param colorkey: OPTIONAL
Die Farbe in hexadezimal, die durch transparent ersetzt werden soll.
Wenn der wert -1 entspricht, wird die farbe des ersten Pixels links oben als colorkey verwendet
sound:
Der Sound-Tag initialisiert einen Sound, der später anhand des Play-Tags abgespielt werden kann.
@param name:
Der Name des Sounds, um diesen später wiedergeben zu können.
Vorsicht, der Name darf nicht zweimal vorkommen
@param src:
der Pfad zu dem Sound, der geladen werden soll
move:
Der Move-Tag bewegt ein Bild in einer vorgegebenen Geschwindigkeit zu einer vorgegebenen Position.
@param top:
Die Position auf der Y-Achse, in der die Bewegung enden soll.
Steht ein "+BASE:" oder "-BASE:" vor der Zahl wird die Position zu der letzten position des Bilds gerechnet
+Base:0 würde nichts verändern
@param left:
Die Position auf der X-Achse, in der die Bewegung enden soll.
Steht ein "+BASE:" oder "-BASE:" vor der Zahl wird die Position zu der letzten position des Bilds gerechnet
+Base:0 würde nichts verändern
@param speed:
Die Geschwindigkeit mit der die Bewegung durchgeführt werden soll
@param image:
Der Name des Bilds, das bewegt werden soll.
Wird dieser Tag nicht verwendet bezieht sich die Bewegung auf die gesammte Animation
Wird "PARENT" als wert übergeben,
wird das Bild des Elterntags übernommen.
resize:
Der Resize-Tag dehnt ein Bild mit einer vorgegebenen Geschwindigkeit auf eine vorgegebenen Größe.
Der BASE Zoomingfaktor wird mit der Breite des Bildes gerechnet.
Verfügt das Bild über einen Cut bereich, so wird nur dieser vergrößert.
@param image:
Der Name eines Bilds, das verändert werden soll.
Wird "PARENT" als wert übergeben,
wird das Bild des Elterntags übernommen.
@param speed:
Die Geschwindigkeit mit der das Bild verändert werden soll
@param width:
Die endgültige Breite des Bilds.
Steht ein "+BASE:" oder "-BASE:" vor der Zahl wird die neue Größe zu der vorhandenen gezählt.
+10 wäre die Größe des Bilds +10 pixel
@param height:
Die endgültige Höhe des Bilds.
Steht ein "+BASE:" oder "-BASE:" vor der Zahl wird die neue Größe zu der vorhandenen gezählt.
+10 wäre die Größe des Bilds +10 pixel
fade:
Der Fade-Tag verändert den Alphawert eines Bildes
@param image:
Der Name eines Bilds, das verändert werden soll.
Wird "PARENT" als wert übergeben,
wird das Bild des Elterntags übernommen.
@param speed:
Die Geschwindigkeit mit der das Bild ein oder ausgeblendet werden soll
@param alpha:
Die opacity des Bilds in Prozent
Steht ein "+" oder "-" vor der Zahl wird die neue opacity zu der vorhandenen gezählt.
255 = Visible
0 = invisible
rotate:
Der Rotate-Tag dreht ein Bild in einer vorgegebenen Geschwindigkeit in einen vorgegebenen Winkel.
Verfügt das Bild über einen cut bereich, so wird nur dieser rotiert.
@param image:
Der Name eines Bilds, das verändert werden soll.
Wird "PARENT" als wert übergeben,
wird das Bild des Elterntags übernommen.
@param speed:
Die Geschwindigkeit mit der das Bild gedreht werden soll
@param angle:
der Winkel von 0 bis 360
Steht ein "+BASE:" oder "-BASE:" vor der Zahl wird der neue Winkel mit dem alten verrechnet.
@param left: OPTIONAL
Der Punkt auf der x-Achse um den das Bild rotiert werden soll von dem Mittelpunkt des Bilds ausgehend
@param top: OPTIONAL
Der Punkt auf der y-Achse um den das Bild rotiert werden soll von dem Mittelpunkt des Bilds ausgehend
alter:
Der Alter-Tag ändert den cut bereich
@param image:
Der Name eines Bilds, das ersetzt oder geändert werden soll.
Wird "PARENT" als wert übergeben,
wird das Bild des Elterntags übernommen.
@param cut:
Ändert den Sichtbaren Bereich des Bilds.
left,top,width,height
remove:
Der Remove-Tag löscht ein Bild von der Anzeige
@param image:
Der Name eines Bilds, das gelöscht werden soll.
Wird "PARENT" als wert übergeben,
wird das Bild des Elterntags übernommen.
wait:
Führt seinen Tag-Bauch nach einem kurzem Delay aus.
@param time:
Die Zeit die gewartet werden soll in millisekunden als Fließkommazahl
1.00 oder 0.234 etc.
play:
Der Play-Tag spielt einen Sound ab
@param sound:
der Name des Sounds der wiedergegeben werden soll
### Besondere Parameter
Den Parameter wait kann man in jedem Tag außer dem Wait-Tag verwenden.
Es wird solange gewartet, bis die Wartezeit abgelaufen ist.
wait="0.50" würde 50ms warten bis der Tag ausgeführt werden würde.
Der Parameter speed beschreibt immer einen Abstand je sekunde.
move speed="60" würde das Bild 60 pixel pro Sekunde verschieben
#### Besondere Parameter eigenschaften:
Man kann die Position, Größe zoomfaktor etc. auch um den Basiswert erhöhen oder niedriger machen lassen.
Hierzu schreibt man entweder ein "+BASE:" oder "-BASE:" vor eine Zahl
In manchen Tags kann PARENT als attribute value übergeben werden, was auf den Parent tag verweisst
Um eine zufällige Zahl zu erzeugen, kann man an Stelle einer Zahl "rdm:min/max" schreiben.
Um eine zufällige Zahl zwischen 1 und 10 zu generieren würde man also "rdm:1/10" als Parameter wert übergeben.
#### Beispiel:
<animation name="Stun" top="0" left="0">
<image name="char" src="stun_32x36.png" cut="192, 0, 32, 36" />
<wait time="0.20">
<alter image="char" cut="0, 0, 32, 36" />
<move image="char" top="+BASE:0" left="+BASE:10" speed="1" />
<wait time="0.13">
<alter image="char" cut="32, 0, 32, 36" />
<wait time="0.13">
<alter image="char" cut="64, 0, 32, 36" />
<wait time="0.50">
<alter image="char" cut="96, 0, 32, 36" />
<wait time="0.13">
<alter image="char" cut="128, 0, 32, 36" />
<wait time="0.13">
<alter image="char" cut="160, 0, 32, 36" />
<wait time="0.13">
<alter image="char" cut="192, 0, 32, 36" />
<wait time="0.50" />
</wait>
</wait>
</wait>
</wait>
</wait>
</wait>
</wait>
</animation>
http://orkah.de/websvn/
Vielen Dank und noch einen angenehmen Abend,
ix