Problem mit Funktion
Übersicht

tipfehlerBetreff: Problem mit Funktion |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe folgende Funktion geschrieben, welche eigentlich ein Bild aufgeteilt in einen Array speichern sollte. Diese will ich benutzen um einen Animierten Charakter zu erstellen. Allerdings wird immer nach dem ende einer Zeile ein leeres Bild in den Array eingefügt, was er eigenlich nicht machen sollte. Was mache ich falsch?
Code: [AUSKLAPPEN] Function CHARLADEN(CharDatei$, BildX, BildY) char = LoadImage(CharDatei$) Dim CharDim((BildY/34+1) * (BildX/24+1)) For Y = 0 To BildY/34 For X = 0 To BildX/24 CharDim(i) = CreateImage(24,34) CopyRect(X*24, Y*34, 24, 34, 0, 0, ImageBuffer(char), ImageBuffer(CharDim(i))) MaskImage CharDim(i), 0,255,0 i = i + 1 Next Next FreeImage(char) End Function Meine Maps lade ich auch so, dort funktioniert alles einwandfrei. |
||
![]() |
sbrog |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich glaube
Code: [AUSKLAPPEN] Dim CharDim((BildY/34+1) * (BildX/24+1)) sollte Code: [AUSKLAPPEN] Dim CharDim((BildY/34) * (BildX/24)) heißen, denn wenn du ein 340 Pixel langes Bild mit 10 Bildern hast, dann brauchest du ein array mit 10 elementen, nichtm mit 11 |
||
Sebe |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] For Y = 1 To BildY/34+1 For X = 1 To BildX/24+1 CharDim(i) = CreateImage(24,34) CopyRect(X*24, Y*34, 24, 34, 0, 0, ImageBuffer(char), ImageBuffer(CharDim(i))) MaskImage CharDim(i), 0,255,0 i = i + 1 Next Next Versuch mal, die FOR Schleifen bei 1 zu starten und bis zum "richtigen" Ende (was deiner Definition nach ja "BildY/34+1" bzw. "BildX/24+1" ist) laufen zu lassen... |
||
tipfehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jetzt hab ich diesen thread glatt vergessen ![]() Zitat: heißen, denn wenn du ein 340 Pixel langes Bild mit 10 Bildern hast, dann brauchest du ein array mit 10 elementen, nichtm mit 11 das hab ich mir auch gerdacht, wenn ich aber das +1 weg lasse spuckt er mir immer "Array Index Out Of Bounds" aus... Zitat: Versuch mal, die FOR Schleifen bei 1 zu starten und bis zum "richtigen" Ende (was deiner Definition nach ja "BildY/34+1" bzw. "BildX/24+1" ist) laufen zu lassen... Wenn ich es so versuche, dann lässt er mir die rechte Seitedes einglesenen Bildes ganz weg... Also liegt es wohl auch nciht daran. |
||
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn de ein Bild dazu tust dan schau ich des mal an und kabnn dir esagen was daran net stimmt udn hab keien Lust nen Bild zu suchen deswegen so =) wenn man die Daten alle direkt mitgibt helfen einem viel emhr weil sie den code starten können is auch viel einfacher fidn ich =) also eifnach mal nen bidl un ausführbaren Coded dazu packen und dan auf webspace udn dan lin kgeben =) | ||
Edlothiol |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Warum benutzt du nicht einfach LoadAnimImage? Genau für sowas ist es ja da... | ||
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
vielleicht will er ja seine eigene machen um zu verstehen wie es arbeitet =) | ||
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
wenn die Bilder 24 *34 groß sein sollen ist das total falsch dimensioniert!
Zitat: Dim CharDim((BildY/34+1) * (BildX/24+1))
am besten mit HilfsVariablen das ganze erst mal zerstückeln, dann fällt sowas auch auf! hab das mal gemacht, und sollte auch gehen...Code: [AUSKLAPPEN] Function CHARLADEN(CharDatei$, BildX= 0, BildY= 0)
char = LoadImage(CharDatei$) ; Sicherung If ImageWidth (char) Mod 24 Or ImageHeight (char) Mod 34 RuntimeError (" bidgröße ist falsch ") End If Bilder_X = ImageWidth (char)/24 Bilder_Y = ImageHeight (char)/34 Dimension = (Bilder_X * Bilder_Y ) -1 Dim CharDim (Dimension) For Y = 0 To Bilder_Y -1 For X = 0 To Bilder_X - 1 CharDim(i) = CreateImage(24,34) CopyRect(X*24, Y*34, 24, 34, 0, 0, ImageBuffer(char), ImageBuffer(CharDim(i))) MaskImage CharDim(i), 0,255,0 i = i + 1 Next Next FreeImage(char) End Function |
||
[BB2D | BB3D | BB+]
|
tipfehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
http://tipfehler.ti.funpic.de/CharLaden.rar so wie gewünscht "funktionierender" Code ![]() Link einfach in den Browser kopieren, dann klappts auch |
||
![]() |
Bigmichi |
![]() Antworten mit Zitat ![]() |
---|---|---|
der link geht aber net ![]() |
||
![]() |
rambo256 |
![]() Antworten mit Zitat ![]() |
---|---|---|
das is funpic scheiß ![]() du musst die addresse kopieren und in die addressenleiste einfügen... zum Problem: Es gäbe kein Problem,wenn du einfach nuir Loadanimimage benutzen würdest ![]() |
||
Asus F53z
Das Leben ist eine reine Konkatenation... |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] Dim CharDim(0)
Graphics 650,100, 16, 2 SetBuffer BackBuffer() TFormFilter 0 DimGR = CHARLADEN("RUDRA.PNG", 3, 4); 3 bilder breit und 4 bilder hoch ClsColor 255,255,255 Repeat Cls For i = 0 To DimGR DrawImage CharDim(i), 32*i, 0 Next Flip Until KeyHit(1) End Function CHARLADEN(CharDatei$, BildX, BildY) char = LoadImage(CharDatei$) TileGrX= ImageWidth (char) / BildX TileGrY= ImageHeight (char) / BildY DebugLog "TileGrX "+TileGrX DebugLog "TileGrY "+TileGrY ; Sicherung If ImageWidth (char) Mod TileGrX Or ImageHeight (char) Mod TileGrY RuntimeError (" bidgröße ist falsch ") End If Bilder_X = ImageWidth (char)/TileGrX Bilder_Y = ImageHeight (char)/TileGrY Dimension = (Bilder_X * Bilder_Y ) -1 Dim CharDim (Dimension) For Y = 0 To Bilder_Y -1 For X = 0 To Bilder_X - 1 CharDim(i) = CreateImage( TileGrX,TileGrY) CopyRect(X* TileGrX, Y*TileGrY, TileGrX, TileGrY, 0, 0, ImageBuffer(char), ImageBuffer(CharDim(i))) MaskImage CharDim(i), 0,255,0 i = i + 1 Next Next FreeImage(char) Return i-1 End Function 12 Bilder = dim Chardim (11) und nicht 18 dann sind die Bilder 24x32 groß! nicht 24x34 das erklärt auch die Schwarzen Streifen einfacher geht es aber mit Code: [AUSKLAPPEN] charimage =LoadAnimImage ("RUDRA.PNG",24,32,0,12)
MaskImage charimage, 0,255,0 For i = 0 To 11 DrawImage charimage, 32*i, 100,i Next |
||
[BB2D | BB3D | BB+]
|
tipfehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ganz großes DANKESCHÖN! ![]() Ich wollte einfach mal eine alternative zu LoadAnimImage benutzen. Zum einen um zu schauen ob das auch geht, zum anderen weil ich etwas gesucht hab um meine Bildgröße frei zu variieren. Wobei ich jetzt einsehe, das ich bei LoadAnimImage genauso den Befehl Scalimage verwenden hätte können.... |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group