Textbox mit hintergrund und text in einer funktion...!?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

otta

Betreff: Textbox mit hintergrund und text in einer funktion...!?

BeitragMo, Jan 16, 2006 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallöchen,

ich hab mir so nebenbei mal überlegt eine kleine Funktion die mir dann mein gewünschten Text sammt hintergrund Bildchen und kleinem extraBildchen anzeigt. Naja ich hab mir das ungefair so vorgestellt:

[syntax="bb"]
AppTitle "textfeld"
Graphics3D 1024,768,32,2


Global hintergrund$
Global titel$
Global nachricht$
Global pic= LoadImage("bild$")
Global hinter$=LOADIMAGE("hintergrund$")


Function textfeld(titel$,hintergrund$,nachricht$)


Text 50,155,titel$
DrawBlock hinter$,50,155
Text 140,140,nachricht$

End Function


While Not KeyHit(1)


;###
textfeld("test","bg1.png","testest")


Flip


Wend

End
[/syntax]

ohne Bild funktioniert das auch so aber mit Bild kommt eine Memory violation.

Naja ich vermute mal das ich was mit den variablen falsch gemacht hab aber weiß nciht genau was. WÄhre klasse wenn mir da Jemand auf die Sprünge helfen könnte.
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos

5k41

BeitragMo, Jan 16, 2006 22:34
Antworten mit Zitat
Benutzer-Profile anzeigen
mh also als erstes find ich es sinnlos einer Funktion variablen zu übergeben, welche Global sind...das sollte aber eigentlich nicht das porblem sein...denn das prob ist das du einen Graphics3D setzt und drawblock benutzt...du solltest Graphics benutzen um auf der 2D ebene zu arbeiten!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

otta

BeitragMo, Jan 16, 2006 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
öhm naja das spiel ist 3d und diese textfelder sollen dann halt im vordergrund erscheinen und je nach bedarf acuh den hintergrund wechseln.

Oh und das DrawBlock hatte ich ganz vergessen wieder rückgängig zu machen das war nur zu testzwecken.
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos

BlitzChecker

Betreff: Re: Textbox mit hintergrund und text in einer funktion...!?

BeitragMo, Jan 16, 2006 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Richtig hat Folgendes geschrieben:

[syntax="bb"]
AppTitle "textfeld"
Graphics3D 1024,768,32,2


Global hintergrund$
Global titel$
Global nachricht$
;Global pic= LoadImage(bild$) ;Auskommentiert, weil bild$ nicht vorhanden
Global hinter


Function textfeld(titel$,hintergrund$,nachricht$)
hinter = LoadImage(hintergrund$)
Text 50,155,titel$
DrawBlock hinter,50,155
Text 140,140,nachricht$

End Function


While Not KeyHit(1)


;###
textfeld("test","bg1.png","testest")


Flip


Wend

End
[/syntax]


Müsste so gehn Wink
www.xairro.com

otta

BeitragMo, Jan 16, 2006 23:27
Antworten mit Zitat
Benutzer-Profile anzeigen
*hach* vielen dank , es klappt !

Also war der Fehler nur das das Bild in der Funtion geladen werden muss?
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos
 

Ava

Gast

BeitragDi, Jan 17, 2006 4:06
Antworten mit Zitat
Auweia, übernehme bloss dieses Beispiel vom BLITZchecker nicht für Dein Programm!

1) ist es nicht gut, ein Bild erst in der Funktion zu laden - zumindest nicht, wenn diese regelmässig oder sogar in einer Hauptschleife aufgerufen wird!
2) ist es noch viel schlechter, wenn dann das geladene Bild dort noch nicht einmal wieder freizugeben wird! Confused

Mach es am besten so:
- lade Dein Hintergrundbild zu Beginn in eine Variable
- übergebe dieses Bild + Nachricht an die Funktion

Dein erster Ansatz ganz oben war eigentlich schon auf dem besten Wege . nur hast Du dort noch einige Fehler in die Umsetzung mit eingebaut. Ich versuche, Dir das auf die Schnelle mal auszubessern (kann's aber grad nicht testen / hoffe, ich baue keine Flüchtigkeitsfehler mit ein!):

Code: [AUSKLAPPEN]
Global hintergrund$ // <-- kann weg!
Global titel$ // <-- kann weg!
Global nachricht$ // <-- kann weg!
Global pic= LoadImage("bild$") // wird für das Bsp. nicht gebraucht? = kann weg!
Global hinter$=LOADIMAGE("hintergrund$") // <-- Hier hast Du den falschen Variablentyp gewählt ($=string, muss %=integer sein!), zum zweiten hast Du da einen Fehler mit dem Dateinamen!


Jetz das Ganze mal ausgebessert:

Code: [AUSKLAPPEN]
AppTitle "Textfeld"
Graphics3D 1024,768,32,2


Local hintergrund_bild = LOADIMAGE("dateiname.bmp")


Function Textfeld(titel$, bild, nachricht$)

     Text 50, 155, titel$
     DrawBlock bild, 50, 155
     Text 140, 140, nachricht$

End Function


While Not KeyHit(1)

     Cls

     Textfeld("test", hintergrund_bild, "testest")

     Flip

Wend


End



So, hoffe es klappt!
Lieben Gruss, Ava
  • Zuletzt bearbeitet von Ava am Di, Jan 17, 2006 15:00, insgesamt einmal bearbeitet

BlitzChecker

BeitragDi, Jan 17, 2006 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Tschuldigung, aber ich war gestern abend ganz schön in eile.
und wenns nur n farbiges rechteck is, kannst du auch den befehl color und rect benutzen.
ich hoffe, jetzt krieg ich keinen ärger weil rect so langsam is Mad Very Happy
www.xairro.com

otta

BeitragDi, Jan 17, 2006 14:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi ava,

erstmal vielen Dank für die Hilfe aber dein Beispiel funktioniert leider auch nicht. Aber Sinn dieser Funktion soll sein das ich wann immer ich will andere Hintergrundbilder Für den Text laden kann was mit deinem Beipsiel ,meiner Meinung nach, nicht möglich ist(achja ich denke mal du meinst statt LoKal eher Local, oder?):

Code: [AUSKLAPPEN]
Local hintergrund_bild = LOADIMAGE("dateiname.bmp")


So ,nehme ich jedenfalls an, kann man das Bil doch dann später eigendlcih nciht mehr ändern oder?

Achja wegen den Variablen...ja wie gesagt da hab ichs noch nciht so ganz mit.

Aber dennoch erstmal vielen Dank für deine Hilfe!

EDIT: An Blitzchecker, neenee das soll auf jedenfall nBilchen sein, einfarbig siehts n bisschen fad aus Wink .
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos
 

Ava

Gast

BeitragDi, Jan 17, 2006 14:58
Antworten mit Zitat
Warum funktioniert es nicht ? - Das Du LoadImage("Dateiname.bmp") durch Dein gewünschtes Bild ersetzen musst, ist Dir klar, ja? Wink Und ob Du es Global oder Local definierst, das ist abhängig davon, wie Du den Rest Deines Programmes ausbauen möchtest. In diesem kleinen Beispiel würde halt eine lokale Variable ausreichen.


[/edit] Ich hab grad mein altes Blitz3D mal rausgekramt und meinen Code-Schnippsel ausprobiert. Also bei mir läuft das!


Und zu Deiner Frage:Zitat:
So ,nehme ich jedenfalls an, kann man das Bil doch dann später eigendlcih nciht mehr ändern oder?


Ich weis nicht, wofür Du das benötigst, also das Austauschen Deines Nachrichten-Hintergrund-Bildes. Wenn Du verschiedene Nachrichten-Bilder willst, dann lade sie doch alle zu Beginn Deines Programmes:Code: [AUSKLAPPEN]
Global Hintergrund_1 = LoadImage("Bild_1.bmp")
Global Hintergrund_2 = LoadImage("Bild_2.bmp")
Global Hintergrund_3 = LoadImage("Bild_3.bmp")
usw...

Dann kannst Du doch den jeweils gewünschten Hintergrund für Deine Nachricht auswählen und an die Funktion weitergeben.


+ Ava +

otta

BeitragDi, Jan 17, 2006 16:20
Antworten mit Zitat
Benutzer-Profile anzeigen
ja das ich das austauschen muss bzw mehrere Bilder laden muss ist mir schon klar Wink. Nagut wenn ich das vorher lade ists auch einfach etwas zu korrigieren falls später mal etwas geändert wird.

So habs jetzt nochmal ausprobiert und hrr..ja jso klapts. Weiß nciht dann hab ich da wohl vorhin n bisschen was falsch kopiert oder dergleichen.

So dann nochmal ein Danke für die Hilfe und Geduld ,eigendlich dürfte das Thema jetzt durch sein Wink .
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))

Aktuelles Projekt:
momentan Projektlos

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group