Du bist nicht angemeldet.

nokol

Waldschrat

  • »nokol« ist der Autor dieses Themas

Beiträge: 187

Aktuelles Projekt: altersheim

  • Private Nachricht senden

1

Samstag, 7. Februar 2009, 13:20

While Draw

guten morgen,

ich möchte eine sprite 1024px weit zeichnen,sodass ich nicht das Sprite immer einzeln bis 1024 px zeichnen muss.
Wie genau funktioniert das in GM mit einer while schleife =/?
GM oldie ich bin :troll:

Phoenix

Vergoldete D-Mark

Beiträge: 371

Game Maker Version: 7 Pro

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

2

Samstag, 7. Februar 2009, 13:37

Sorry, ich versteh das net so richtig...
Aber auf jeden Fall : 1024px-sprites sind verdammt groß, und bei mehreren wird die perfomance derbst abfallen...

Playa

Vogelhaus

Beiträge: 107

Game Maker Version: 6 registriert

Selbsteinschätzung: GML Fortgeschrittener

  • Private Nachricht senden

3

Samstag, 7. Februar 2009, 13:44

ich hoffe ich hab dich richtig verstanden:

GML

1
2
3
spr= //hier den namen den sprites einfügen
for(i=0;i<=1024/sprite_width(spr);i+=sprite_width(spr))
draw_sprite(spr,-1,x+i,y)

nokol

Waldschrat

  • »nokol« ist der Autor dieses Themas

Beiträge: 187

Aktuelles Projekt: altersheim

  • Private Nachricht senden

4

Samstag, 7. Februar 2009, 13:50

achso sry...
ich habe ein sprite das 64x64ps ist nun möchte ich diesen Sprite auf eine länge von 1024 px in einen Room anbringen sodass ich nicht den Spite einzel einfügen muss bis 1024 px .

In Java sieht das so ungefähr aus

Zitat

g = Graphics
int x,x2;

x=8
x2=0

while(x<1024)
{
x=x+8
x2=x2+8
g.drawRect(x,y+8,x2,y-8)
}
GM oldie ich bin :troll:

Beiträge: 593

Game Maker Version: 7 Pro

Selbsteinschätzung: Drag & Drop Einsteiger

  • Private Nachricht senden

5

Samstag, 7. Februar 2009, 13:51

ich hoffe ich hab dich richtig verstanden:

GML

1
2
3
spr= //hier den namen den sprites einfügen
for(i=0;i<=1024/sprite_width(spr);i+=sprite_width(spr))
draw_sprite(spr,-1,x+i,y)
das stimmt noch nicht ganz....es muss so sein:

GML

1
2
3
spr= //hier den namen den sprites einfügen
for(i=0;i<=1024/sprite_width(spr);i+=1)
draw_sprite(spr,-1,x+i*sprite_width(spr),y)


Unsere Träume können wir erst dann verwirklichen, wenn wir uns entschließen, einmal daraus zu erwachen.
Josephine Baker

Verwurster

Gevatter Tod

Beiträge: 682

  • Private Nachricht senden

6

Samstag, 7. Februar 2009, 13:52

GML

1
2
3
spr=sprite_index;
for(i=0;i<=1024;i+=sprite_get_width(spr))
draw_sprite(spr,image_index,i,y)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Verwurster« (7. Februar 2009, 13:57)


Beiträge: 593

Game Maker Version: 7 Pro

Selbsteinschätzung: Drag & Drop Einsteiger

  • Private Nachricht senden

7

Samstag, 7. Februar 2009, 13:56


ich hoffe ich hab dich richtig verstanden:

GML

1
2
3
spr= //hier den namen den sprites einfügen
for(i=0;i<=1024/sprite_width(spr);i+=sprite_width(spr))
draw_sprite(spr,image_index,x+i,y)

Funzt doch.
ähh naja....das würde ja bedeuten dass izuerst 0, danach 64 danach 64*2 usw. wird. wenn wir die 1024 jetz aber durch 64 dividieren is die grenze 16. das bedeutet dass der sprite nur einmal gezeichnet wird


Unsere Träume können wir erst dann verwirklichen, wenn wir uns entschließen, einmal daraus zu erwachen.
Josephine Baker

Verwurster

Gevatter Tod

Beiträge: 682

  • Private Nachricht senden

8

Samstag, 7. Februar 2009, 13:58

Jo, ist mir auch aufgefallen :B
Hab's bearbeitet und getestet, sollte seinen Dienst jetzt verrichten.
Ist mir vorher noch nie in den Sinn gekommen, die spriteweite zu i hinzuzuaddieren, habe auch immer weite/spriteweite und dann als x-wert i*spriteweite genommen was eigentlich blödsinn ist und nur performance frisst wenn man darüber nachdenkt.
Jaja, man lernt nie aus...

Übrigens kannst du das im gm genauso machen wie in java:

Quellcode

1
2
3
4
5
6
x=8;
while(x<1024)
{
x+=64;
draw_sprite(sprite_index,image_index,x,y);
}


Nur sind while-schleifen net soo toll dafür.
For-schleifen haben nämlich einen eingebauten Index, was man in Schleifen ja meistens benötigt und wenn du etwas ganz oft machen willst, nimmste einfach repeat(ganz oft){code}.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Verwurster« (7. Februar 2009, 14:06)


nokol

Waldschrat

  • »nokol« ist der Autor dieses Themas

Beiträge: 187

Aktuelles Projekt: altersheim

  • Private Nachricht senden

9

Samstag, 7. Februar 2009, 14:28

der Sprite verschwindet nach 1024 das geht doch nicht

Quellcode

1
2
3
4
5
6
x=8;
while(x<1024)
{
x+=64;
draw_sprite(sprite_index,image_index,x,y);
}
GM oldie ich bin :troll:

Verwurster

Gevatter Tod

Beiträge: 682

  • Private Nachricht senden

10

Samstag, 7. Februar 2009, 18:28

Okay, welche der 3 funktionierenden Lösungen hast du ausprobiert und was genau passt dir daran nicht?
Das sollte doch genau das machen was du wolltest.

mauge

Neujahrs-Contest-Sieger 2009

Beiträge: 2 806

  • Private Nachricht senden

11

Samstag, 7. Februar 2009, 18:35

Okay, welche der 3 funktionierenden Lösungen hast du ausprobiert und was genau passt dir daran nicht?
Das sollte doch genau das machen was du wolltest.


Wenn ich das richtig sehe, wird das Sprite bei deiner letzten Methode immer nur exakt auf x gezeichnet. Scheinbar will er aber, dass das Sprite die Fläche füllt. Dazu war der Ansatz mit der for-Schleife schon richtig.
█████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
█████ ███████ ███ your █████ ████ government.

nokol

Waldschrat

  • »nokol« ist der Autor dieses Themas

Beiträge: 187

Aktuelles Projekt: altersheim

  • Private Nachricht senden

12

Sonntag, 8. Februar 2009, 20:43

hat sich erledigt danke =)
GM oldie ich bin :troll:

Ähnliche Themen