|
3 registered members (vicknick, 7th_zorro, Quad),
990
guests, and 12
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
gui panel frage
#418487
02/25/13 14:24
02/25/13 14:24
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
Hallo ich sitze gerade an meiner GUI und stelle folgendes fest: erstelle ich ein "Fenster" mit der A-taste kann ich es bewegen und auch schließen..  erstelle ich aber 2 fenster kann ich das eine weder schließen noch bewegen , nur das was gerade "erstellt" worden ist -> dannach geht nichts mehr ich hab den code neu hochgezogen ich weis nicht wo mein fehler liegt, aber ich vermute dass es an "hWnd_buffer[i_1]" liegt das ist aber nur das leerpanel, für meine buttons weis jemand was ich falsch mache , ohne mir gleich den ganzen code zu zerflücken MfG: Ratz
Last edited by ratz; 02/26/13 14:21.
|
|
|
Re: gui panel frage
[Re: ratz]
#418490
02/25/13 14:56
02/25/13 14:56
|
Joined: Nov 2007
Posts: 2,568 Germany, BW, Stuttgart
MasterQ32
Expert
|
Expert
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
|
mach für deine fenster keine arrays du kannst per mouse_panel rausfinden, auf welchem panel du grade bist daher kannst du auch beliebig viele fenster machen, ohne dass du diese arrays benötigst. wenn du weitere informationen über dein panel speichern willst, kannst du skill_x und skill_y verwenden (PANEL-Handles oder sonstiges) wenn ich das richtig verstehe, verwendest du 2 panels für dein Fenster. Gibt es dafür einen speziellen Grund oder einfach blos um Content und Fenster zu trennen? hier der code für das panel-schließen ohne globals array:
function kill_hWnd_win_1()
{
reset(mouse_panel, SHOW);
}
|
|
|
Re: gui panel frage
[Re: MasterQ32]
#418503
02/25/13 18:24
02/25/13 18:24
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
ja ich wollten nen kleinen hauch von Windows rein bringen mit Fenster-rand ect. nur das Problem ist jetzt wenn ich das einzelnt mache, dass nur die buttons nach und nach verschwinden , jedoch nicht das Fenster  aber die mouse_panel function kannte ich noch nicht 
|
|
|
Re: gui panel frage
[Re: ratz]
#418505
02/25/13 18:37
02/25/13 18:37
|
Joined: Nov 2007
Posts: 2,568 Germany, BW, Stuttgart
MasterQ32
Expert
|
Expert
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
|
wenn du fensterrand und so haben möchtest, probier doch mal, dein hauptfenster als ein panel zu managen und deine fenster features machst du in extra panel welche aber UNTOUCHABLE sind damit hast du sozusagen immer das richtige panel und die featrues stören nicht
schreib dir am besten auch eine updateroutine für ein panelfenster, welches die ganzen features je nach zustand ein- oder ausblendet und sich beendet, wenn du das panel geschlossen hast (beispielsweise per skill_x != 0 oder == 0)
|
|
|
Re: gui panel frage
[Re: MasterQ32]
#418526
02/26/13 14:20
02/26/13 14:20
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
so ich habs jetzt folgendermaßen realisiert:
//////////////////////////////////////////
// Free GUI-EXAMPLE for all 3D gs use //
// written by Patrick Ratz //
//////////////////////////////////////////
var i_1 = 0;
var i_2 = 0;
var i_3 = 0;
BMAP* arrow = "mouse_1.bmp";
BMAP* hWnd_win_2 = "hwnd_win_256.bmp";
BMAP* hWnd_win_3 = "hwnd_win_512.bmp";
BMAP* hWnd_but_1_up = "hWnd_but_1_up.bmp";
BMAP* hWnd_but_1_down = "hWnd_but_1_down.bmp";´
BMAP* hWnd_but_2_up = "hWnd_but_2_up.bmp";
BMAP* hWnd_but_2_down = "hWnd_but_2_down.bmp";
PANEL* hWnd_win_1_pan[100];
function start_gui();
function create_hWnd_win_1();
function move_hWnd_win_1();
function kill_hWnd_win_1();
////////////////////////////////////////////////
function move_hWnd_win_1()
{
while(mouse_left == 1)
{
mouse_panel.pos_x += mickey.x;
mouse_panel.pos_y += mickey.y;
wait(1);
}
}
function kill_hWnd_win_1()
{
reset(mouse_panel,SHOW);
}
/////////////////////////////////////////
function create_hWnd_win_1()
{
hWnd_win_1_pan[i_1] = pan_create
(
"bmap = hWnd_win_2;
pos_x = 100;
pos_y = 100;
button(234,6,hWnd_but_2_down,hWnd_but_2_up,hWnd_but_2_down,kill_hWnd_win_1,NULL,NULL);
button(218,6,hWnd_but_2_down,hWnd_but_2_up,hWnd_but_2_down,move_hWnd_win_1,NULL,NULL);
flags = SHOW | TRANSLUCENT ",10
);
}
function start_gui()
{
while(1)
{
if (key_a ==1)
{
wait(-1);
i_1 += 1;
create_hWnd_win_1();
}
wait(1);
}
}
function main()
{
start_gui();
mouse_mode = 4;
mouse_map = arrow;
}
jetzt wird alles über ein panel gesteuert - man kann alle fenster bewegen - man kann alle fenster schließen - und neue sertellen nur ab und zu bekommt ich die fehlermeldung: Error E1513 Script crash in move_hWnd_win1: drücke ich auf okey laüft alles ohne probleme weiter nur mich nervt diese dumme Fehlermeldung -> da ist doch kein fehler ... oder ?
|
|
|
Re: gui panel frage
[Re: ratz]
#418529
02/26/13 14:40
02/26/13 14:40
|
Joined: Nov 2007
Posts: 2,568 Germany, BW, Stuttgart
MasterQ32
Expert
|
Expert
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
|
doch  mickey entspricht nicht der realen mausbewegung. wenn du deine maus zu schnell bewegst, hast du für ein paar frames einen invalid pointer (mouse_panel ist dann NULL weil die maus halt nicht mehr über dem panel ist) verwende stattdessen die änderung von mouse_pos also
if(mouse_panel)
{
mouse_panel.pos_x += mouse_pos.x - last_mouse_pos.x;
}
|
|
|
Re: gui panel frage
[Re: MasterQ32]
#418532
02/26/13 14:56
02/26/13 14:56
|
Joined: Oct 2008
Posts: 341
ratz
OP
Senior Member
|
OP
Senior Member
Joined: Oct 2008
Posts: 341
|
 okey  gerade habe ich rausgefunden wofür die Flag: UNTOUCHALBE steht: erstellt man ein extra panel
PANEL* background =
{
bmap = "background.bmp";
pos_x = 0;
pos_y = 0;
flags = SHOW | UNTOUCHABLE;
}
und setzt das flag nicht , so bewegt dieser sich auch mit ::::letzte frage:::: jetzt zur der move function: binde ich mouse_pos.x und co ein flipt das fenster durch den screen
function move_hWnd_win_1()
{
while(mouse_left)
{
if(mouse_panel)
{
mouse_panel.pos_x += mouse_pos.x;
mouse_panel.pos_y += mouse_pos.y;
}
wait(1);
}
}
|
|
|
Re: gui panel frage
[Re: Ayumi]
#418540
02/26/13 15:29
02/26/13 15:29
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
Wieso willst du du auf die Position des mouse_panel.pos noch die aktuelle Pos hinzufügen? Nehm das + weg, dann sollte es funktionieren. Richtig gesehen  ...aber trotzdem würde das Fenster beim Bewegen so springen, dass die linke obere Ecke auf der Mausposition ist. @ratz Meinen Post im letzten Thread hast du scheinbar nicht gesehen oder einfach ignoriert.
POTATO-MAN saves the day! - Random
|
|
|
|