problem mit funktionen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

bjh

Betreff: problem mit funktionen

BeitragDi, Jan 04, 2011 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe ein problem mit funktionene in blitz3d.

wenn ich eine mesh in einer funktion lade, kann ich sie ausserhalb nicht verändern.
was muss ich mache, damit es funktioniert.

variablen kann man ja weitergeben, indem man sie in die klammern schreibt.
aber mit meshs funzt das nicht.

Xeres

Moderator

BeitragDi, Jan 04, 2011 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
wenn ich eine mesh in einer funktion lade, kann ich sie ausserhalb nicht verändern.
Dann ist es eine Lokale Variable Arrow local die verlieren ihre Gültigkeit wenn die Funktion beendet wird.
Benutzte z.B. Global.
Zitat:
variablen kann man ja weitergeben, indem man sie in die klammern schreibt.
aber mit meshs funzt das nicht.
Doch, tut es. Wenn nicht, machst du was falsch (was genau lässt sich ohne Code natürlich nicht sagen).
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragDi, Jan 04, 2011 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
danke für deine antwort,
aber ich checks immer noch net ganz.

wenn ich die mesh ausserhalb einer funktion lade funktioniert alles.
aber auch wenn ich "global meshname" schreibe und die mesh in der funktion lade, funktionierts wieder nicht.

muss ich etwas zusätzliches eingeben?
z.b.: Global mesh=loadmesh("...")
 

Lapiz

BeitragDi, Jan 04, 2011 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht suchst du das:
Code: [AUSKLAPPEN]

Function LoadMesh2(mesh)
mesh=loadmesh(mesh)
return mesh
end Function


und dann vor der mainloop:
Code: [AUSKLAPPEN]

mesh=LoadMesh2("deinmesh.x")

Xeres

Moderator

BeitragDi, Jan 04, 2011 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
a) Variable Global deklarieren und in der Funktion laden.
b) Die Funktion gibt den Mesh in eine Variable zurück (siehe Lapiz' Code).
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

bjh

BeitragDi, Jan 04, 2011 19:24
Antworten mit Zitat
Benutzer-Profile anzeigen
naja
ich lade einfach die mesh vor meiner hauptschleife und verändere sie dann in der funktion.
das wird wahrscheinlich das einfachste sein.

und danke für die antworten

blackgecko

BeitragDi, Jan 04, 2011 20:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
aber auch wenn ich "global meshname" schreibe und die mesh in der funktion lade, funktionierts wieder nicht.

Hier mal ein Grundgerüst für dich, das mit globalen Variablen ist am Anfang vlt nicht so einleuchtend.

BlitzBasic: [AUSKLAPPEN]
Global mesh1
Global mesh2
;usw
deineFunktion()

Function deineFunktion()
mesh1 = LoadMesh("DeinMesh")
mesh2 = LoadMesh("DeinanderesMesh")
;usw
End Function


Die beiden Meshs werden global deklariert, das heißt, sie sind überall im Programm verfügbar.
Und in der Funktion werden sie dann mit Werten gefüllt.
So long and thanks for all the fish.
Fedora 17 | Windows 7 || BlitzPlus | BlitzMax
Rechtschreibflame GO!!! Deppenapostroph | SeidSeit | Deppenakzent | DassDas | Deppenleerzeichen | TodTot | enzigste.info - Ja, ich sammel die.

BladeRunner

Moderator

BeitragDi, Jan 04, 2011 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
bjh: wie wäre es wenn Du einfach deinen fehlerhaften Code postest damit wir nicht RATEN müssen was verkehrt läuft?
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

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group