Funktion - Bilder wechseln
Übersicht

RafiBetreff: Funktion - Bilder wechseln |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
Ich will ein Symbol haben was immer aufblinkt. Für den Anfang dachte ich, dass ich einfach zwei Bilder abwechseln. Ich will eine Funktion haben, mit der ich auch bestimmen kann alle wieviel Millisecs sich das Bild ändern. Wenn ich die wechselvariable und den Timer Global definiere dann geht es, allerdings will ich ja die Funktion für mehrere Symbole nehmen mit unterschiedlichen Geschwindigkeiten. Gibt es dazu ein gutes Tutorial? Ich stehe öfter vor dem Problem, dass ich nicht weiß wie man geschickt animiert ohne viel zu viel Code zu schreiben. z.B. Animation in einer Tilemap etc. Das ist mein Versuch, der leider nicht geht: START_TIMER=Millisecs() Function BILDWECHSELN(bild1:TImage, bild2:TImage, sec:Int, x_bild:Int, y_bild:Int) Local wechselvariable Local BILDWECHSELN_TIMER = START_TIMER If BILDWECHSELN_TIMER + sec < MilliSecs() If wechselvariable = 0 Then wechselvariable = 1 Else wechselvariable = 0 EndIf BILDWECHSELN_TIMER = MilliSecs() EndIf If wechselvariable = 0 DrawImage bild1, x_bild, y_bild If wechselvariable = 1 DrawImage bild2, x_bild, y_bild 'DrawText wechselvariable, 300, 300 End Function Danke! |
||
RafiBetreff: noch eine Ergänzung |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
... dazu noch:
Ich hab sowieso viele Fragen was den Spielaufbau betrifft. Wie informiert man sich da am besten? |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dein Problem ist ein Paradebeispiel für die Nutzung von Objektorientierung. Dann kannst du nämlich aus dem "Blinky bildchen" ein Objekt machen, welches ein Bild hat mit verschiedenen Bildern, eine "lastUpdate" Variable und eine Variable die sagt wie lange ein Frame angezeigt werden soll.
Darüber hinaus brauchts natürlich eine Update und Draw Methode, damit man was sieht und sich das auch aktualisiert. Darüber hinaus: Es gibt allerlei Resourcen. Primär das Tutorial und FAQ Board hier und auf www.blitzbasic.com, ansonsten wenn du C oder andere Sprachen kannst, ist Google ein sehr guter Weg (kannst ja erst Mal mit robsite.de, gamedev.net, gamasutra.org anfangen. hat net viel für BM, aber das brauchst du ja auch nicht, denn die Struktur ist in allen Sprachen +- gleich und die Paradigmen etc sind allgemeingültig) Ja englisch wird vorausgesetzt aber das gilt für alle Blitz Sprachen, denn es gibt davon keine deutsche Version und die Fähigkeit die Hilfe/Dokumentation zu benutzen und verstehen darf man von einem Programmierer ja erwarten ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Rafi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah ok. Vielen Dank, kannst du mir mal ein Muster von so einem Type posten?
Ich hab es jetzt so gemacht Entspricht das dem wie du es meinst? Type TBlinkbild Field bild1:TImage Field bild2:TImage Field lastupdate:Int Field sec:Int Field x_bild:Int Field y_bild:Int Field BILDWECHSELN_TIMER:Int = MilliSecs() Method update() If BILDWECHSELN_TIMER + sec < MilliSecs() If lastupdate = 0 Then lastupdate = 1 Else lastupdate = 0 EndIf BILDWECHSELN_TIMER = MilliSecs() EndIf End Method Method drawself() If lastupdate = 0 DrawImage bild1, x_bild, y_bild If lastupdate = 1 DrawImage bild2, x_bild, y_bild End Method End Type Damit funktioniert es. ![]() Danke |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jupp, ist in etwa das was ich meinte ![]() Hätte allerdings AnimImage genommen und das ganze dann ein wenig "generischer" gemacht, so das es eine unbestimmte Anzahl Bilder erlaubt ![]() Code: [AUSKLAPPEN] Type TBlinkbild Field bild:TImage ' Dies ist ein animiertes Bild mit mehreren Frames Field lastUpdate:Int Field timePerFrame:Int Field curFrame:int Field maxFrames:int Field x_bild:Int Field y_bild:Int Method Init(bild:TImage, Frames:int) assert bild <> NULL, "bild muss ein existierendes TImage sein" assert Frames > -1, "Es muss mindestens 1 Frame vorhanden sein" self.bild = bild self.maxFrames = Frames self.curFrame = 0 end method Method update() If MilliSecs() - self.lastUpdate >= timePerFrame self.curFrame = (self.curFrame + 1) mod self.maxFrames self.lastUpdate = Millisecs() endif End Method Method drawself() DrawImage self.bild, self.x_bild, self.y_bild, self.curFrame End Method End Type |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group