| |
|
|
| Hallo Frank Hast du vielleicht eine Idee wie ich eine Anzahl von Sprites im Hintergrund aufbauen und dann gleichzeitig auf dem Schirm bringen kann. Habs bisher probiert mit:
Mcls 1024,768 Startpaint -1 Schleife InitSprite ..... SetBackAutoCollision ... SpriteToHDC .... SetSpriteFixMode ... EndeSchleife Endpaint Habs noch ein bisserl herumprobiert, aber es kommt immer Blödsinn raus. Irgendwie fehlt mir hier der Funken.
Gruß Thomas |
|
|
| |
|
|
|
| Hallo Thomas,
Frank wurde am Mittwoch operiert und hat sich seit dem noch nicht zurück gemeldet (ich hoffe mal es geht im Gut !).
Zu deinem Problem: Ich schätze mal die Grafiken im Hintergrund aufbauen wird nicht das Problem sein, sondern die ganzen Sprites in der Schleife erstellen zulassen. Die Hürde hier liegt in den Handles, da man ja keine variablen Variablennamen benutzen kann. Die ablösung sollte hier eine Bereichsvariable schaffen, in der schleife das ergebnis von @initsprite... schön der Reihe nach in die Bereichsvariable kopieren und im nachhinein alle rauskopieren. Ok, ist natürlich auch nicht das wahre aber anders geht es wohl leider nicht.
Moritz |
|
|
| |
|
|
|
| Hallo Moritz <Frank wurde am Mittwoch operiert und hat sich seit dem noch nicht zurück gemeldet (ich hoffe mal es geht im Gut !).> Hab ich gar nicht gewusst, wünsch im aber mal gute Besserung.
Ich verwende für die Spritehandles Bereichsvariablen (geht genauso gut mit Arrays), das ist nicht mein Problem. Will die Sprites gemeinsam auf dem Bildschirm bringen, vielleicht auch mit Semitrans oder anderen Einblendmöglichkeiten. Gruß Thomas |
|
|
| |
|
|
|
| Hallo,
bin wieder zusammengeflickt und gutgelaunt )))
Thomas, bau doch einfach die Sprites außerhalb des Bildschirms auf (z.B. horizontale Position minus 2000) und positioniere nachher alle Sprites wieder um 2000 Pixel nach rechts. Das geht gut in einer Schleife mit:
... x&=GetSpriteX(handle&)+2000 y&=GetSpriteY(handle&) SetSpritePos(handle&,x&,y&,x&,y&) ...
Diese Methode ist sogar schneller, als alle Sprites sofort auf den Bildschirm zu setzten, weil Sprites, die momentan nicht sichtbar sind, gar nicht gezeichnet werden...
Dank euch für die Genesungs-Wünsche !!!
Gruß, Frank (nicht totzukriegen) |
|
|
| |
|
|
|
| Hallo Frank Freut mich daß du nicht totzukriegen bist. Das mit den Sprites auserhalb des Bildschirms aufbauen klingt gut, muß ich dann gleich ausprobieren. Mit einblenden von Sprites wirds wohl nicht so einfach gehen. Gruß Thomas |
|
|
| |
|
|
|
| Hallo,
nein, nicht ganz so einfach, möglich ist es aber. Du mußt direkt die Spritegrafiken mit grafischen Effekten versehen. Vielleicht komm ich ja jetzt irgendwann mal dazu, zu diesem Thema einen Beispielsource zu schreiben...
Gruß, Frank |
|
|
| |
|
|
|
| Hallo Frank Habs ausprobiert mit den Sprites auserhalb des Bildschirm aufzubauen. Unter normalen Umständen werden die Sprites dadurch schneller angezeigt (Abstand ist zwischen den Sprites ist geringer) aber die Cpu Auslastung steigt enorm da noch alle Sprite aktiv sind (Setspritefixmode verlangsamt ja wieder das Ganze) Hab dann beim Testen noch ein Programm laufen gehabt das ganz schön die Cpu im Anspruch nimmt. Dann hats ca. 20 Sekunden gebraucht bis die Sprites am Bildschirm waren. Habs dann wieder wie gehabt probiert, und da war keine Verlangsamung zu erkennen. Die Erkenntniss kam bei der Prf Datei. Als Exe haben beide ohne Verzögerung funktioniert. Gruß Thomas |
|
|
| |
|
|
|
| Hallo Thomas,
ok. Was macht dein Prf-Code denn in dieser Zeit? In einer Warteschleife verharren? Wenn ja, bau mal ein Sleep 5 mit in die Warteschleife ein, dann wird die CPU Belastung deutlich geringer. Für das Clipping der Sprites ist nur Windows zuständig. ProSpeed kopiert ein Sprite auch, wenn es am Bildschirm nicht sichtbar ist, aber Windows akzeptiert den Kopierbefehl nur dann, wenn das Sprite auch sichtbar ist.
Gruß, Frank |
|
|
| |
|
|
|
| Hallo Frank
Hier nochmal zur Erklärung:
Methode1:
Schleifeanfang InitSprite (.....) Spritetohdc SetSpriteFixMode(...1) SchleifeEnde
Der Bildschirmaufbau geht eigentlich recht zügig (als Prf 1/2 sekunde bis 1 Sekunde und als Exe etwas weniger.
Methode2:
Schleifeanfang InitSprite (.....) auserhalb des Bildschirm SchleifeEnde
Schleifenanfang SetSpritePos auf richtige Position SchleifenEnde
Schleifenanfang Spritetohdc SetSpriteFixMode(...1) Schleifendende
Bedingt durch die 2. Schleife (bei der 1. bin ich mir nicht sicher) steigt die Cpu Auslastung gewaltig. Läuft ein Programm in Hintergrund das die Cpu stark belastet (bei mir wars NetAnts, ist ein DownloadManager) hat sich der Aufbau vom ersten Sprite bis zum letzten gute 20 Sekunden gebraucht (das war bei der Prf Datei, mit der Exe weniger als 1/2 Sekunde) Ich hab eigentich einen schnellen Pc. Soll mit einem langsameren Pc auch zurechtkommen. Wenn ich hier die 3 Schleife weglassen würd und Sprittohdc und SetSpriteFixMode in die 2 Schleife einbauen würd, hab ich eigentlich nicht viel Zeitgewinn beim Aufbau der Sprites.
Mein Programm verharrt nicht irgendwo in einer Warteschleife. Wenn der Spriteaufbau geschafft ist in Metode 2, ist die Cpu Auslastung eh wieder normal (bedingt durch setspritefixmode 1)
Ich wollt halt doch den Bildschirmaufbau beschleunigen. Ich glaub ich werd lieber bei Methode 1 bleiben Gruß Thomas |
|
|
| |
|
|
|
| Hi,
na klar, SpriteToHDC() ist verantwortlich...
Gruß, Frank |
|
|
| |
|
|