TImage in TMap gespeichert, DrawImage wirft Fehler aus
Übersicht

Gray FoxBetreff: TImage in TMap gespeichert, DrawImage wirft Fehler aus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Guten Morgen ![]() Ich habe ein kleines Problem mit dem Verständnis von TMaps und Objekten. Das Ziel ist, mehrere TImages in einer TMap zu speichern. Die Grundlage sieht so aus: Code: [AUSKLAPPEN] Method add:String(imageKey:String, frames:Int = 0, frameX:Int = 0, frameY:Int = 0)
Local path:String = AppDir + "/" + Self.parent.get("pathData") + "/" + Self.parent.get("pathGfx") Local fileName:String = path + "/" + String(Self.imageReferenceList.ValueForKey(imageKey)) Local image:TImage = New TImage image = LoadImage(fileName) Self.imageRepository.Insert(imageKey, image) 'ToDo: Return und Fehlerbehandlung End Method Beispiel: Code: [AUSKLAPPEN] system.graphic.add("guiBorderFrame")
Aufgerufen wird es mit dieser Methode: Code: [AUSKLAPPEN] Method draw(imageKey:String, X:Int, Y:Int, frame:Int = 0)
DrawImage Self.imageRepository.ValueForKey(imageKey), X, Y End Method Beispiel: Code: [AUSKLAPPEN] system.graphic.draw("guiBorderFrame", 100, 100)
Leider wirft der Debugger von BLIde folgenden Fehler aus: Zitat: Compile Error: Unable to convert from 'Object' to 'TImage'
Wenn ich den Code abändere: Code: [AUSKLAPPEN] Method draw(imageKey:String, X:Int, Y:Int, frame:Int = 0)
Local image:TImage = Self.imageRepository.ValueForKey(imageKey) DrawImage image, X, Y End Method erscheint folgender Fehler: Zitat: Compile Error: Unable to convert from 'Object' to 'brl.max2d.TImage'
Ich war bisher der Meinung, dass der Datentyp "Object" ein universeller Platzhalter für alle Arten von Types ist!? |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
BlitzMax: [AUSKLAPPEN] Local image:TImage = Self.imageRepository.ValueForKey(imageKey) -> BlitzMax: [AUSKLAPPEN] Local image:TImage = TImage(Self.imageRepository.ValueForKey(imageKey)) Hinter einem Object könnte auch ein String oder ein Array stecken. Daher muss man explizit umcasten. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Gray Fox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, das macht durchaus Sinn ![]() Eine Frage zum Umcasten hätte ich noch: Kann ich auch den Datentyp einer Variable bzw. den eines "Feldes" dynamisch zur Laufzeit ändern? Von: BlitzMax: [AUSKLAPPEN] Type system zu: BlitzMax: [AUSKLAPPEN]
|
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, das geht nicht.
Umcasten betrifft auch nur einen Wert bzw. eine Referenz und keine Variable. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Gray Fox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok, gut zu wissen, danke.
Ich hätte noch zwei Fragen, für die ich jetzt keinen eigenen Thread aufmachen möchte. Vielleicht kannst du mir in der Hinsicht auch weiterhelfen. 1. Wie lautet der Datentyp für ein Return von TRUE / FALSE? 2. Werden Objekte / Types standardmäßig als Referenz übergeben? Beispiel zu 2: BlitzMax: [AUSKLAPPEN]
Ist das nun eine Übergabe byRef oder byVal? Ich habe nämlich gelesen, dass es für die Übergabe als Referenz einen speziellen Befehl gibt. Wenn ich aber innerhalb des systemSubGraphics-Types über self.parent.setMethode eine Eigenschaft von CoreSystem ändere, dann hat dies Eigenschaft auch innerhab der "Hauptschleife" den Wert, den ich ihr in dem untergeordneten systemSubGraphics-Type zugewiesen hat. |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. True und False sind Integer-Konstanten. -> "Int"
2. Objekte werden immer als Referenz übergeben; primitive Datentypen als Wert. Änderungen einem Objekt wirken sich überall aus. Ein "Var" Zusatz sorgt dafür, dass die beim Aufruf benutzte Variable in der Funktion geändert werden kann. mfG mpmxyz BlitzMax: [AUSKLAPPEN] Local i:Int=1 BlitzMax: [AUSKLAPPEN] Local i:Int=1 BlitzMax: [AUSKLAPPEN] Local i:String[]=["1"] 'ein String-Array BlitzMax: [AUSKLAPPEN] Local i:String[]=["1"] BlitzMax: [AUSKLAPPEN] Local i:String[]=["1"] |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
Gray Fox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke, das ist sehr aufschussreich. ![]() In PHP hat man solche Probleme nicht so sehr ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group