Seite 2 von 2

Verfasst: 24.06.2007 12:43
von RSBasic
@ZeHa
Hi :)
Endlich ein ausführliches Feedback :D
Ehrlich gesagt frage ich mich dann auch direkt, wie Du das mit Life in Slavery machen willst... prüfst Du da jede Wand, jeden Abgrund, jede Leiter etc. einzeln?
Nein, zum Glück nicht :mrgreen:
In LiS benutze ich eine Array.
Dein Editor sollte eine richtige Map ausgeben (also das, was man später mal in einem Array sehen will), und nicht einfach nur eine Routine, die die Map anzeigt.
OK, werde ich dann mal versuchen, dies in einer Array auszugeben.
Im Übrigen hätte ich noch was die Bedienung angeht einen Tip: es wäre ganz gut, wenn Du Objekte direkt am Raster ausrichten würdest. Also daß wenn man sich in 'nem gewissen Abstand zu einer Linie befindet, die Grafik direkt ran"snappt".
Guck mal bitte in die Einstellungen, da kann man den Abstand beim Einrasten einstellen :wink:

Verfasst: 24.06.2007 13:27
von Kaeru Gaman
RSBasic hat geschrieben:Und wie kann ich, die ID, die ich mit zufälligerweise mit #PB_Any erstellt habe, ermitteln? :freak:
das ist der rückgabewert von LoadSprite bzw. CreateSprite,
benutzt man z.b. so:

Code: Alles auswählen

Dim TileSprite(9)
For n=0 To 9
  TileSprite(n) = LoadSprite(#PB_Any, "Tile"+Str(n)+".bmp")
Next

For n=0 To 9
  DisplaySprite( TileSprite(n), 50*n, 50 )
Next

Verfasst: 24.06.2007 15:16
von THEEX
RSBasic hat Folgendes geschrieben:
Und wie kann ich, die ID, die ich mit zufälligerweise mit #PB_Any erstellt habe, ermitteln? Freak

das ist der rückgabewert von LoadSprite bzw. CreateSprite,
benutzt man z.b. so:
Um eventuell einer Verwirrung vorzubeugen, was Kearu schreibt ist zwar nicht falsch, aber dabei wird nicht die ID ermittelt, sondern die Spritenummer. Die ID kann man so ermitteln:

Code: Alles auswählen

Dim TileSpriteID(9)
For n = 0 To 9
  TileSpriteID(n) = SpriteID(LoadSprite(#PB_Any, "Tile"+Str(n)+".bmp"))
Next

Verfasst: 24.06.2007 15:39
von RSBasic
Danke an Euch
Ich werd mein bestes geben :allright:
Aber dazu brauch ich erstmal Zeit :mrgreen:

Verfasst: 24.06.2007 16:04
von Xaby
Na? Also Aufgaben: Grafik laden >> JPEG ausgewählt
Aber dann bleibt der Ladenknopf grau.

Bevor ich verstehe, was ich da alles noch machen muss, um einfach ein Jpeg reinzuladen, hab ich mir meinen eigenen Editor geschrieben :mrgreen:

:allright:

http://www.purebasic.fr/german/viewtopi ... ht=folkisa

:freak:

Verfasst: 24.06.2007 16:49
von RSBasic
Sry dass ich UseJPEGImageDecoder() vergessen habe. :|
In der nächsten Version ist alles gefixt :allright:

Verfasst: 24.06.2007 18:07
von Kaeru Gaman
CSprengel hat geschrieben:... aber dabei wird nicht die ID ermittelt, sondern die Spritenummer.
meines wissens ist die "Nummer" für mit #PB_Any erstellte sprites die ID bzw. das Handle.

das ist auch der grund, warum literale eingaben von Spritenummern über 10K angemeckert werden:
hohe spritenummern = IDs = Handles = mit ANY erzeugt... ;)

Verfasst: 25.06.2007 17:04
von THEEX
meines wissens ist die "Nummer" für mit #PB_Any erstellte sprites die ID bzw. das Handle.
Stimmt nicht, wobei ich das auch mal dachte, aber meine Erfahrung hat mich anderes gelehrt.
Ich arbeite an meinem Projekt zur Zeit viel mit ImageGadget's, wenn man nun im Gadget das Bild ändern möchte, kann man ja bekanntlich dieses mit SetGadgetState() ändern. Da ich dabei auch die Images mit #PB_Any reinlade, mußte ich feststellen, daß die dabei ermittelte Nummer nicht das gewünschte Ergebnis erziehlte. Erst wenn ich diese ermittelte Nummer mit ImageID() verwende, erhalte ich die ID = Handle und dann funktioniert es auch. #PB_Any ist nichts anderes, als eine von PB erstellte Konstante, ich meine, mich auch noch dunkel daran erinnern zu können, daß es bei der Einführung von #PB_Any so gedacht war.
Jetzt fällt mir leider spontan kein Grund ein, eine SpriteID zu nutzen, sonst hätte ich das in einem kleinem Beispiel dargestellt. Allerdings kann ich dazu sagen, daß DisplaySprite() ja die Spritenummer benötigt und keine ID, würde man in Verbindung mit #PB_Any das Handle ermitteln, würde DisplaySprite() das Sprite nicht darstellen.
Da fällt mir gerade ein, wenn ich ein Sprite mit einer Nummer bzw. Konstante reinlade, dann ermittle ich die ID, sowas kann natürlich zu Verwechlungen führen und das war wohl auch der Grund, warum ich selbst Deiner Meinung war, bevor ich meine Erfahrungen mit den Images machte.

Edit:
Ich hab hier noch ein simples Beispiel, welches es zumindest mit den Images beweißt.

Code: Alles auswählen

Nr = CreateImage(#PB_Any, 100, 100)
Debug Nr
ID = ImageID(Nr)
Debug ID
Test = ImageID(1)
Debug Test
Wenn man die vorletzte Zeile nicht rauskommentiert, kommt dementsprechend der Fehler, daß dieses Image nicht initialisiert ist, anders aber das Image, was mit #PB_Any erstellt wurde.


Edit2:

Ohje, das ist 3 Jahre her, als es eingeführt wurde....
12. April 2004 : Version 3.90

- Hinzugefügt: #PB_Any Support (dynamische Numerierung) für DataBase, File, Font, FileSystem, Gadget, Image, Library,
Module, Movie, Palette, Sprite, Sprite3D, SysTray, ToolBar, StatusBar und Window
Edit3:
Sorry, es lies mir einfach keine Ruhe, hier nun der entgültige beweiss.. ;-)
Handles und Nummern

Nummern

Alle erstellten Objekte werden durch eine beliebige Nummer (welche nicht das "Handle" des Objekts ist, siehe hierzu weiter unten) angesprochen. In dieser Anleitung werden diese Bezeichner (Nummern) durch die Notation #Nummer gekennzeichnet. (So hat zum Beispiel jedes erstellte Gadget eine #Gadget Nummer.)

Die Zahlen, die man Objekten zuweist, müssen keine Konstanten sein, sie müssen aber für jedes Objekt einmalig sein. (Ein Bild kann z.B. aber die gleiche Zahl wie ein Gadget haben, weil dies ja unterschiedliche Dinge sind.) Diese Nummern werden benötigt, um die Objekte später im Programm anzusprechen.

Zum Beispiel geben folgende Event-Funktionen diese ID's zurück:
EventGadget()
EventMenu()
EventWindow()

Handles

Alle Objekte bekommen auch vom System eine einmalige Nummer zugewiesen. Diese Nummern nennt man Handles.

Einige PureBasic Funktionen benötigen eben dieses Handle, und nicht die Nummer von PureBasic. In dieser Anleitung wird dies als eine ID bezeichnet.
Beispiel:

ImageGadget(#Gadget, x, y, Breite, Höhe, ImageID [, Flags])
; #Gadget ist hier die Nummer, die Sie dem Gadget zuweisen möchten.
; ImageID muss hier der Handle zu einem Bild sein.

Um das Handle von einem Objekt zu ermitteln, gibt es spezielle Funktionen wie z.B.:
FontID()
GadgetID()
ImageID()
MemoryID()
ThreadID()
WindowID()

Meistens geben die Funktionen, die solche Objekte erstellen, auch dieses Handle als Ergebnis zurück, wenn das Objekt erfolgreich erstellt wurde. Dies ist nur dann der Fall, wenn #PB_Any beim Erstellen des Objekts nicht verwendet wurde. Wenn #PB_Any verwendet wird, dann geben diese Befehle die von PB zugewiesenen Objekt-Nummern zurück, und nicht das Handle.

Nur Bmp?

Verfasst: 07.07.2007 22:34
von Anfänger
Also ich habs mal ausprobiert, u. ich konnte leider nur Bitmap u. kein .gif u. .jpg laden!

ansonsten ist es ganz gut! :allright: