LoadAnimImage

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

bunni

Betreff: LoadAnimImage

BeitragSa, Dez 30, 2006 21:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann mir jemand helfen,wie LoadAnimImage funksuniert.

Mein Tutorial kommt von Robsite,habs da net geschnallt,und
auch die Beschreiben von blitzbase.de schnalle ich net.
B.s.:Ein Animation und Einer der in Bett schläft.




Code: [AUSKLAPPEN]





Laminat = LoadImage("Kapi1\Laminat.bmp")
Sleep1 = LoadImage("Kapi1\Bett1mT.bmp")
Sleep2 = LoadImage("Kapi\Bett2mT.bmp")
Wand = LoadImage("Kapi1\Wand.bmp")
SleepiB = LoadAnimImage("Kapi\BettmT.bmp",81, 112, 1, 2)



MaskImage Sleep1, 255, 0, 255
DrawImage Sleep1, 888, 888, a
MaskImage Sleep2, 255, 0, 255
DrawImage Sleep2, 999, 999, b
MaskImage SleepmB, 255, 0, 255
DrawImage SleepmB, 0, 399

Blitzcoder

Newsposter

BeitragSa, Dez 30, 2006 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst bei Drawimage schon den Frame mit angeben, den er zeichnen soll. Und gewöhn dir bitte einen angemessenen Schreibstil an!
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)

BladeRunner

Moderator

BeitragSa, Dez 30, 2006 23:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohne den ganzen Code und die Gfx kann man sowieso nichts festes sagen, aber:

- die koordinaten die du zum Zeichnen verwenedest sind nur bei sehr grossen Auflösungen zu sehen

- bei loadanimimage beginnt die framenummer bei 0, nicht bei 1

- das maskieren sollte nur einmal nach dem laden erfolgen

-wenn du nirgends ein waitkey oder so hast ist das programm zu ende bevor du was siehst.

- Stichwort: doublebuffering. Benutz mal die Forensuche dazu.

- was sollen a und b für parameter sein (Frames können es ja nicht sein, da die Bilder ja ohne animation geladen wurden)?
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

bunni

BeitragSo, Dez 31, 2006 16:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Vergessen wir den Code.Ich weis überhaupt nicht,
wie LoadAnimImage funktioniert.Mit den Code will ich zeigen,
wie ich es kapiert habe,
was wohl mehr schlecht als recht gelungen ist.
Ausserdem weiß ich wie Dobbble Buffering funktioniert,
Waitkey habe ich eingebaut.
 

Mr Hopp

BeitragSo, Dez 31, 2006 16:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Nunja....du hast eine Bitmap mit mehreren gleichgroßen, aneinandergereiten Bildern. Diese lädst du mit LoadAnimImage und gibst dabei an:

- Den Pfad/Dateinamen
- Die Breite (in Pixeln) jedes Einzelbildes (alle gleichgroß, ne?)
- Die Höhe (in Pixeln) jedes Einzelbildes
- Das Startframe (Standartmäßig 0)
- Und die Anzahl der Frames (Einzelbilder)

Edit:

Gezeichnet wird so:
DrawImage Bild,x,y, FRAME-NUMMER


Für eine Dauerhafte Animation wirst du dir wohl oder übel einen Timer basteln müssen. z.B. so:

Code: [AUSKLAPPEN]
Timer_start=Millisecs()

Repeat
Cls

Timer=Millisecs()-Timer_start

If Timer>200 Then frame=1
If Timer>400 Then frame=2
If Timer>600 Then frame=0:Timer_start=Millisecs()

DrawImage Bild,100,100,frame

Flip
Until Keyhit(1)
Zitat:
Wie poste ich falsch?

Nachdem ich Google, die FAQ's und die Boardsuche erfolgreich ignoriert habe, erstelle ich zwei bis fünf neue Themen, in den falschen Unterforen, mit kreativen Titeln und undeutlichem Text, unter dem sich jeder etwas anderes vorstellen kann.
 

bunni

BeitragSo, Dez 31, 2006 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Und wie trenne ich die Dateinamen der einzelnen Bilder

Eingeproggt

BeitragSo, Dez 31, 2006 17:25
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht bös gemeint, aber du hast echt keine Ahnung von Animierten Bildern, wie?
Die Einzelbider sind in EINER Bitmap gespeichert. Welche Dateinamen willst du da trennen?
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Blitzcoder

Newsposter

BeitragSo, Dez 31, 2006 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.robsite.de/bbkurs2/08bilderanzeigen.htm

Gut durchlesen.
P4 3 Ghz@3,55Ghz|GF 6600GT 256MB|Samsung 80GB | 2x Samsung 160GB|2048MB DDR-400 RAM|6 Mbit Flatrate | Logitech G15 | Samsung 225BW-TFT | Ubuntu Gutsy Linux | Windows Vista | Desktop | Blog | CollIDE | Worklog
________________
|°°°°°°°°°°°°°°||'""|""\__,_
|______________ ||__ |__|__ |)
|(@) |(@)"""**|(@)(@)****|(@)
 

bunni

BeitragSo, Dez 31, 2006 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Zumindest hat sich eine Frage geklärt.
Das Tutorial von Robsite erwähnt, das man die Einzelbilder in einer
beliebigen Reihenfolge ordnen kann.Wie mache ich es das.
Was ist eine Frame,und wie sage ich den Programm,welches Bild beginnt.
 

Rubber

BeitragSo, Dez 31, 2006 18:08
Antworten mit Zitat
Benutzer-Profile anzeigen
einzell bilder in einer datei nebeneinander speichern.

AnimImage loaden. (Breite,Höhe der einzelnen angeben,Frames gesamm.)

Frame = Einzelbild

also wenn du die bilder
A
B
C
hast, dann sind die zb 1x1 pixel

dann erstellst du graphic D
und in D speicherst du neben einander
ABC -- die datei ist dann 1 pixel hoch und 3 breit
frames gesammt: 3


dasnn ist A = frame 1 und B = 2 und C = 3
Wenn Gott mich schon liebt, dann dich erstrecht...
 

bunni

BeitragSo, Dez 31, 2006 18:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, das Thema währe zumindest beendet.
Danke für die Bereitschaft auf eine langwierige Art zuerklären.


Arbeit gerade an ein Spiel.


Es sieht s*h*i*e aus.
 

bunni

BeitragSo, Dez 31, 2006 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
So ich hab es kapiert,

bloß der Editor zeigt an,dass das Bild nicht exierstiert.
(Image does not exist)
Hier der Code.Code: [AUSKLAPPEN]
Laminat = LoadImage("Kapi1\Laminat.bmp")
Sleep = LoadAnimImage("Kapi\BettAnimsT", 112, 81, 0, 1)
Aufwachen = LoadAnimImage("Kapi1\BettAnimaT", 112, 81, 0, 1)
Wand = LoadImage("Kapi1\Wand.bmp")

Repeat
Cls
SetBuffer BackBuffer()

TileBlock Laminat
Timer_a = MilliSecs()
Timer = MilliSecs() - Timer_a
If Timer < 500 Then
DrawImage Sleep, 0, 399, 0
ElseIf Timer > 500 Then
DrawImage Sleep, 0, 399, 1
EndIf



Ahja,das ist ein Codeschnipsel,der Rest funktioniert!!!!
Es fehlen auch Befehle wie Flip in diesem Codeschnipsel,
weil man meine Techniken kopieren kann.

Und das verdirbt bestimmtdie Spannung,ein Objeckt
mehrfach anzuzeigen,selbst zu lösen(-;
 

D²O

BeitragSo, Dez 31, 2006 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Achtung falle Wink


bei loadani.... gibst die direkte anzahl der Frame an die du ladest.
bei 1 ist das auch nur ein frame, bei 2 ......usw.

Jetzt kommts Smile
beim zeichnen, also der Draw befehl, wird nicht von 1 an gezählt sondern
computertypisch von 0

Lädst du nur 1 frame kannst du auch nur "frame 0" zeichnen.
Bei zwei gehts von 0-1 ,
bei drei 0-2...... usw.
Kapiert Wink
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;

BladeRunner

Moderator

BeitragMo, Jan 01, 2007 13:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Ahja,das ist ein Codeschnipsel,der Rest funktioniert!!!!
Es fehlen auch Befehle wie Flip in diesem Codeschnipsel,
weil man meine Techniken kopieren kann.

Wir sind hier um unser Wissen zu teilen, nicht es mit blutger Kralle zu verteidigen.
Wenn alle so dächten wäre dieses Forum tot.
Also zeig uns nur deinen ganzen code, wir werden dir sicher nichts klauen (Sei dir sicher dass Du nichts weltbewegend neues gemacht haben wirst).
Btw. hast Du bei sleep und aufwachen keinen Dateityp im Dateinamen angegeben.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

snörkl

BeitragMo, Jan 01, 2007 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ja, ich würd übrigens das mit dem timer nicht so machen :
Code: [AUSKLAPPEN]
If timer > 500
If timer > 1000 then timer = 0


sondern so, erspart zeit. Wenn du verschiedene längen brauchst ist das oben besser, aber sonst ziehe ich das hier vor

Code: [AUSKLAPPEN]
GRAPHICS 640,480,16
SETBUFFER BACKBUFFER()
gfxSparks=LOADANIMIMAGE("Help\Samples\Graphics\spark.bmp",32,32,0,3)
MASKIMAGE gfxSparks,255,0,255
WHILE NOT KEYHIT(1)
   CLS
   IF MILLISECS() > tmrSparks + 100 THEN
      tmrSparks=MILLISECS()
      frmSparks=(frmSparks + 1) MOD 3
   END IF
   DRAWIMAGE gfxSparks,MOUSEX(),MOUSEY(),frmSparks
   FLIP
WEND

Quelle: blitzbase

So erspart man sich bei vielen animierten images zeit. Falls das falsch ist ruhig sagen, ich bin immer für kritik offen Wink

mfg
Snörkl

Axe

BeitragMo, Jan 01, 2007 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Das er ein Bild nicht findet könnte an dieser Zeile liegen:

bunni hat Folgendes geschrieben:
Sleep = LoadAnimImage("Kapi\BettAnimsT", 112, 81, 0, 1)


Alle anderen Dateien leigen im Unterordner Kapi1.

Ist natürlich nur eine Vermutung da wir den ganzen Code/Dateien ja nicht kennen.

Gruß Axe
 

Florian

BeitragMo, Jan 01, 2007 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Sleep = LoadAnimImage("Kapi\BettAnimsT", 112, 81, 0, 1)
Aufwachen = LoadAnimImage("Kapi1\BettAnimaT", 112, 81, 0, 1)


Die Dateierweiterung fehlt.
 

bunni

BeitragMo, Jan 01, 2007 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Thanks, hab sofort eingebaut und es funktioniert.

Bereit zum Schliesen.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group