DynamicSprite Resize and Flip funktion und Charaktere?
- Skyhawk
- Verpackungs-Wegwerfer
- Beiträge: 77
- Registriert: 27.04.2004, 19:40
- Kontaktdaten:
DynamicSprite Resize and Flip funktion und Charaktere?
Hi
bin echt froh, das die DynamicSprite Resize and Flip funktionen es in die neue beta geschafft haben.
Sehr hilfreich um den Umfang auf der Festplatte zu reduzieren.
(und jetzt noch die SpriteCompression.... yeah)
Ich benutzt das jetzt zuerst um Spiegelnde oberflächen zu "vereinfachen".
Vorher musste ich noch jeden gespiegelten Charakter mit extra Sprites in den Sprite Manager laden und das verbraucht massig platz...
allerdings war der Script aufwand verschwindend gering:
character[REFLECT].x=character[EGO].x;
character[REFLECT].y=character[EGO].y+charactergröße;
character[REFLECT].loop=character[EGO].loop;
character[REFLECT].frame=character[EGO].frame;
mit der neuen Methode scriptet man sich echt einen zurecht...
if ((character[EGO].loop==0) && (character[EGO].frame == 0)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(57);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}
if ((character[EGO].loop==0) && (character[EGO].frame == 1)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(28);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}
if ((character[EGO].loop==0) && (character[EGO].frame == 2)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(29);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}
.... usw und sofort....
es funktioniert zwar einwandfrei, aber ist ne menge arbeit, und jeder weitere gespiegelte character braucht nochmal das ganze...
auch sieht es nicht so schick aus wie mit AA runtergerechnete Charactere...
gibt es ne möglichkeit den gerade benutzen spriteslot eines Characters direkt zu ermitteln?
PS:
am besten und einfachsten wär natürlich ne eiweiterung im View Manager der vorhandenen NORMAL / FLIPPED Modi mit UPSIDEDOWN / BOTH
PPS: Ich wollt das schon im englischen Forum posten, aber ich brech mir mit englisch momentan echt einen ab
bin echt froh, das die DynamicSprite Resize and Flip funktionen es in die neue beta geschafft haben.
Sehr hilfreich um den Umfang auf der Festplatte zu reduzieren.
(und jetzt noch die SpriteCompression.... yeah)
Ich benutzt das jetzt zuerst um Spiegelnde oberflächen zu "vereinfachen".
Vorher musste ich noch jeden gespiegelten Charakter mit extra Sprites in den Sprite Manager laden und das verbraucht massig platz...
allerdings war der Script aufwand verschwindend gering:
character[REFLECT].x=character[EGO].x;
character[REFLECT].y=character[EGO].y+charactergröße;
character[REFLECT].loop=character[EGO].loop;
character[REFLECT].frame=character[EGO].frame;
mit der neuen Methode scriptet man sich echt einen zurecht...
if ((character[EGO].loop==0) && (character[EGO].frame == 0)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(57);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}
if ((character[EGO].loop==0) && (character[EGO].frame == 1)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(28);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}
if ((character[EGO].loop==0) && (character[EGO].frame == 2)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(29);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
}
.... usw und sofort....
es funktioniert zwar einwandfrei, aber ist ne menge arbeit, und jeder weitere gespiegelte character braucht nochmal das ganze...
auch sieht es nicht so schick aus wie mit AA runtergerechnete Charactere...
gibt es ne möglichkeit den gerade benutzen spriteslot eines Characters direkt zu ermitteln?
PS:
am besten und einfachsten wär natürlich ne eiweiterung im View Manager der vorhandenen NORMAL / FLIPPED Modi mit UPSIDEDOWN / BOTH
PPS: Ich wollt das schon im englischen Forum posten, aber ich brech mir mit englisch momentan echt einen ab
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
-
- Profi-Abenteurer
- Beiträge: 915
- Registriert: 26.07.2003, 19:10
- Wohnort: Osaka
Im Technical-Bereich des AGS-Forums, wie immer eigentlich:
http://www.bigbluecup.com/yabb/index.php?topic=21188.0
http://www.bigbluecup.com/yabb/index.php?topic=21188.0
-
- Adventure-Gott
- Beiträge: 4575
- Registriert: 13.07.2004, 14:04
- Wohnort: Da wo muss
- Kontaktdaten:
Danke, ich glaube, da sollte ich öfters mal nach gucken.
Ich besorg mir aber erst die Finale Version, bei Beta kann soviel passieren...
Ich hoffe, Chrisi erlaubt bald mal die for und do...while-Schleifen
Ich besorg mir aber erst die Finale Version, bei Beta kann soviel passieren...
Ich hoffe, Chrisi erlaubt bald mal die for und do...while-Schleifen
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.
Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
-
- Hobby-Archäologe
- Beiträge: 163
- Registriert: 28.04.2005, 16:26
- Wohnort: Mönchengladbach
Re: DynamicSprite Resize and Flip funktion und Charaktere?
Skyhawk hat geschrieben:
if ((character[EGO].loop==0) && (character[EGO].frame == 0)) {
RawRestoreScreen();
DynamicSprite* sprite = DynamicSprite.CreateFromExistingSprite(57);
sprite.Resize(50,93);
sprite.Flip(eFlipUpsideDown);
RawDrawImageTransparent(character[EGO].x-25, character[EGO].y-1, sprite.Graphic, 50);
sprite.Delete();
man kann Pointer auch als Array(?) definieren
Code: Alles auswählen
DynamicSprite * SpiegelSprite[n]; ---> n =Anzahl der Frames
die definierst du dann durch:
Code: Alles auswählen
SpiegelSprite[1] = DynamicSprite.CreateFromExistingSprite(57);
SpiegelSprite[2] = DynamicSprite.CreateFromExistingSprite(28 );
usw.
Code: Alles auswählen
int a=1;
while (a<n+1){ ---> n =Anzahl der Frames
SpiegelSprite[a].Resize(50,93);
SpiegelSprite[a].Flip(eFlipUpsideDown);
a++;}
Code: Alles auswählen
if (cEgo.loop==0) {
RawRestoreScreen();
RawDrawImageTransparent(cEgo.x-25, cEgo.y-1, SpiegelSprite[cEgo.Frame].Graphic + m-1, 50); --->m ist das erste SpiegelSprite mit dem Charakter
SpiegelSprite[cEgo.Frame].Delete();}
- Skyhawk
- Verpackungs-Wegwerfer
- Beiträge: 77
- Registriert: 27.04.2004, 19:40
- Kontaktdaten:
- Skyhawk
- Verpackungs-Wegwerfer
- Beiträge: 77
- Registriert: 27.04.2004, 19:40
- Kontaktdaten: