2 registered members (TipmyPip, 1 invisible),
18,731
guests, and 7
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Mehrere Panel ausblenden
#402801
06/10/12 13:59
06/10/12 13:59
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
Hallo, vorweg: ich hab früher mit c-script ein paar sachen gemacht, dann ne längere pause eingelegt, und beginne nun mit lite-c und einem neuen projekt ganz von vorne.
Im moment versuche ich, ein Intro zu machen, das abläuft, während das level im hintergrund lädt.
und mit einem panel funktioniert das auch wunderbar:
PANEL* black = { pos_x = 0; pos_y = 0; layer = 12; bmap = Intro11; alpha = 100; } function main() { screen_size.x = 1024; screen_size.y = 600;
set(black,SHOW); level_load("level_sunflowers.WMB"); wait(1);
wait(-4);
set(black,TRANSLUCENT); for (black.alpha=100; black.alpha-=5*time_step; black.alpha>0) wait(1); reset(black,TRANSLUCENT);
}
die idee ist nun, 3 panels übereinander zu legen, und nacheinander auszublenden.
komischerweise schaffe ich es immer nur gerade mal ein panel auszublenden, ist wie verhext. also: das oberste panel wird ausgeblendet, wunderbar, aber das darunter bleibt einfach stehen. obwohl der code fürs ausblenden ja derselbe ist, nur eben dem panel angepasst... ich mach da jetzt schon seit über einem tag dran rum. sfz. --------------------------------------------------------------- BMAP* Intro11 = "panel_intro_00_black.bmp"; BMAP* Intro10 = "panel_intro_01_bfsema.bmp"; BMAP* Intro09 = "panel_Intro_02_Artticket.bmp";
PANEL* black = // { pos_x = 0; pos_y = 0; layer = 11; bmap = Intro11; alpha = 100; } PANEL* bfsema = /// { pos_x = 0; pos_y = 0; layer = 10; bmap = Intro10; alpha = 100; } PANEL* artticket = // { pos_x = 0; pos_y = 0; layer = 09; bmap = Intro09;
alpha = 100; }
function main() { screen_size.x = 1024; screen_size.y = 600;
set(black,SHOW); set(bfsema,SHOW); set (artticket,SHOW);
level_load("level_sunflowers.WMB");
wait(1);
set(black,TRANSLUCENT); for (black.alpha=100; black.alpha-=5*time_step; black.alpha>0) wait(1); reset(black,TRANSLUCENT);
wait(-4);
set(bfsema,TRANSLUCENT); for (bfsema.alpha=100; bfsema.alpha-=5*time_step; bfsema.alpha>0) wait(1); reset(bfsema,TRANSLUCENT);
wait(1);
set(artticket,TRANSLUCENT); for (artticket.alpha=100; artticket.alpha-=5*time_step; artticket.alpha>0) wait(1); reset(artticket,TRANSLUCENT);
wait(1);
}
ich hatte am anfang den panels flags vergeben, (SHOW) und dachte, dass es daran liegen könnte. jetzt hab ich die flags mal weggemacht, das ding läuft, aber eben immer nur bis zum obersten panel.
mir fällt nun nichts mehr ein.
grüße.
|
|
|
Re: Mehrere Panel ausblenden
[Re: eq]
#402804
06/10/12 14:21
06/10/12 14:21
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
Also Ich würde das ganze so machen:
set(panel, TRANSLUCENT);
while(panel.alpha > 0)
{
panel.alpha -= 2;
wait(1);
}
reset(panel1, TRANSLUCENT);
sollen mehrere Panels gleichzeitig ausgeblendet werden so:
set(panel1, TRANSLUCENT);
set(panel2, TRANSLUCENT);
set(panel3, TRANSLUCENT);
while(panel1.alpha > 0)
{
panel1.alpha -= 2;
panel2.alpha = panel1.alpha;
panel3.alpha = panel1.alpha;
wait(1);
}
reset(panel1, TRANSLUCENT);
reset(panel2, TRANSLUCENT);
reset(panel3, TRANSLUCENT);
EDIT: Mir fällt gerade ein, dass ich mal eine Funktion gemacht habe, mit der man Bilder auf der Mitte des Bildschirms für bestimmte Zeit einblenden kann... Wenn du willst kann ich dir den code dafür geben
Last edited by Kartoffel; 06/10/12 14:23.
POTATO-MAN saves the day! - Random
|
|
|
Re: Mehrere Panel ausblenden
[Re: Kartoffel]
#402806
06/10/12 14:31
06/10/12 14:31
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
Hi, merci erstmal,
also das fade out-script-schnipsel hab ich aus dem manual...
ok, ich teste das jetzt mal aus, das andere script würd ich mir schon gerne mal anschauen, vorallem, weil ich mich irgendwie an dieses lite-c gewöhnen will...
thx a lot
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
Re: Mehrere Panel ausblenden
[Re: eq]
#402808
06/10/12 14:36
06/10/12 14:36
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
ähm. achso, also die panels sollen natürlich nicht alle gleichzeitig ausgeblendet werden, sondern jeweils nach ner kleinen pause von 2-3 sekunden. - ich möchte zunächst ein logo einblenden, und dann den 'spieletitel'. und dann noch zusätzliche infos (welche tasten usw.)
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
Re: Mehrere Panel ausblenden
[Re: eq]
#402809
06/10/12 14:41
06/10/12 14:41
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
Kein problem  hier ist der code-auszug:
int splash_num = 0;
int splash_num_current = 0;
void show_picture(STRING* _pic, var _time_in, var _time_stay, var _time_out)
{
int _my_splash_num = splash_num;
splash_num++;
//> Wait until all previous Pictures were displayed
while(splash_num_current < _my_splash_num) wait(1);
//> Create a Panel
BMAP* _temp_bmap = bmap_create(_pic);
PANEL* _temp_pan = pan_create("flags = SHOW | TRANSLUCENT; alpha = 0;",1000);
//> Set bmap and position
_temp_pan.bmap = _temp_bmap;
_temp_pan.pos_x = screen_size.x / 2 - bmap_width(_temp_bmap) / 2;
_temp_pan.pos_y = screen_size.y / 2 - bmap_height(_temp_bmap) / 2;
//> Fade in
var _alpha_temp = 100 / (_time_in * fps_max);
while(_temp_pan.alpha < 100)
{
_temp_pan.alpha += _alpha_temp;
wait(1);
}
_temp_pan.alpha = 100;
//> Wait
wait(-_time_stay);
//> Fade out
_alpha_temp = 100 / (_time_out * fps_max);
while(_temp_pan.alpha > 0)
{
_temp_pan.alpha -= _alpha_temp;
wait(1);
}
splash_num_current++;
//> Delete it again
ptr_remove(_temp_pan);
ptr_remove(_temp_bmap);
}
Das ganze wird so aufgerufen: show_picture("picture.png", 1, 0.2, 1.5); Das würde jetzt das bild picture.png 1 Sekunde lang einblenden, 0.2 Sekunden lang stehenlassen und 1.5 Sekunden lang ausblenden Es ist auch nicht nötig wait(x); zwischen den funktions-aufrufen auszuführen. Es wird automatisch immer erst das nächste Bild angezeigt, wenn das vorherige ausgeblendet ist.
Last edited by Kartoffel; 06/10/12 14:45.
POTATO-MAN saves the day! - Random
|
|
|
Re: Mehrere Panel ausblenden
[Re: Kartoffel]
#402816
06/10/12 15:03
06/10/12 15:03
|
Joined: Jan 2004
Posts: 76 Germany
eq
OP
Junior Member
|
OP
Junior Member
Joined: Jan 2004
Posts: 76
Germany
|
1. also die while-schleife funktioniert jetzt wunderbar mit mehreren panels, vielen dank. 2. kurze zwischenfrage, wie fügt man hier code richtig ein? ich find hier irgednwie keinen button, mit 'create a list'? 3. das andere, neue script wäre mir grad zu kompliziert. aber an der stelle vllt ein paar verständnis-fragen... - ich wollte zunächst die zeit zwischen dem panel-fade mit einer sleep-anwweisung machen, aber kam ne fehlermeldung. (script-editor hat das aber mit drin) jetzt mach ichs mit wait(-3), funktioniert auch, aber ist das 'sleep' eine alte c-script-anweisung, die nicht mehr funktioniert? was macht in dem zusammenhang "wait(-_time_stay);"? - früher musste/konnte man bmps wieder aus dem grafikspeicher löschen, irgendwie mit bmp purge, gibt s das noch? 
“It's not about what it is, it's about what it can become.”
(Dr. Seuss, The Lorax)
|
|
|
Re: Mehrere Panel ausblenden
[Re: eq]
#402817
06/10/12 15:11
06/10/12 15:11
|
Joined: Jul 2008
Posts: 2,110 Germany
rayp
 
X
|
 
X
Joined: Jul 2008
Posts: 2,110
Germany
|
Schreibe CODE in eckigen Klammern und /CODE in eckigen klammern. sleep(x) Gibt es nicht mehr - verwenden Sie stattdessen wait(-x). Aber Achtung: Sleep(x) (mit großem 'S') gibt es sehr wohl, es ist eine Standard-Windows-Funktion, die sich deutlich anders verhält, als das alte sleep()! wait (-1); // Eine Sekunde warten bmap_purge(bitmap) //gibt Speicher wieder frei mfg
Last edited by rayp; 06/10/12 15:12.
Acknex umgibt uns...zwischen Dir, mir, dem Stein dort... "Hey Griswold ... where u gonna put a tree that big ?" 1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected rayp.flags |= UNTOUCHABLE;
|
|
|
Re: Mehrere Panel ausblenden
[Re: eq]
#402818
06/10/12 15:18
06/10/12 15:18
|
Joined: Jun 2009
Posts: 2,210 Bavaria, Germany
Kartoffel
Expert
|
Expert
Joined: Jun 2009
Posts: 2,210
Bavaria, Germany
|
wie fügt man hier code richtig ein? [code] für den anfang und [#/code] (ohne das #) für ende was macht in dem zusammenhang "wait(-_time_stay);"? wait mit einer positiven Zahl wartet die angegebene Zahl in Frames. wait mit einer negativen Zahl wartet die angegebene Zahl in Sekunden. wait(-_time_stay); wird für die Wartezeit zwischen ein und ausblenden verwenden. da _time_stay die übermittelte variable für die wartezeit in sekunden ist, muss -_time_stay verwendet werden. früher musste/konnte man bmps wieder aus dem grafikspeicher löschen, irgendwie mit bmp purge, gibt s das noch? Ja, bmap_purge gibt es noch, ptr_remove - wie ich es auch im Code verwende - sollte aber auch funktionieren. EDIT: Falls ptr_remove den zugewiesenen Speicher nicht automatisch wieder freigibt, bitte sagen... Dann muss ich n' Haufen Code ändern...
Last edited by Kartoffel; 06/10/12 15:22.
POTATO-MAN saves the day! - Random
|
|
|
|