2 registered members (OptimusPrime, AndrewAMD),
14,580
guests, and 5
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Panels mit d3d lassen sich nicht abschalten
#10480
09/29/02 21:00
09/29/02 21:00
|
Joined: Apr 2002
Posts: 119 Germany
Bones
OP
Member
|
OP
Member
Joined: Apr 2002
Posts: 119
Germany
|
Hallo! Hab da mal wieder eine Frage: Wir sind mit unserem Game jetzt ein ganzes Stück weiter und ich habe jetzt versucht einiges etwas eleganter zu lösen. Dabei bin ich auf einen komischen Effekt gestoßen. Wenn ich nämlich bei Panels das Flag d3d setze, werde ich die nicht mehr los! Ich wollte die Logos am Anfang des Spiels sanft ein- und ausblenden. Doch das Ausblenden klappte nicht. Folgender Code funktioniert zwar: code:
Panelname.transparent = on; Panelname.alpha = 0; while (Panelname.alpha < 100) { Panelname.alpha += 2; wait(1); }
...aber folgendes bleibt ohne Effekt:
code:
Panelname.transparent = on; Panelname.alpha = 100; while (Panelname.alpha > 0) { Panelname.alpha -= 2; wait(1); }
Ich habe auch anderes versucht den Alphawert eines Panels wieder zu reduzieren, aber es
ändert nichts an der Bildschirmanzeige. Beim Debuggen konnte ich feststellen, daß der
Alphawert tatsächlich auch geändert und das Skript ausgeführt wird, aber an der
Bildschirmanzeige ändert das nix. Bei diesen Versuchen ist mir dann aufgefallen, daß auch
Panelname.visible = off;
völlig ohne Folgen bleibt. Das Panel bleibt weiterhin auf dem Bildschirm. Der Hammer ist
aber, daß selbst folgendes kein Löschen des Panels bewirkt:
bmap_purge(Panel-Bitmap);
Wenn die Panels auf transparent geschaltet sind, kann man sehen, daß sie einfach alle
übereinander geklatscht werden, d.h. die hinteren bleiben trotz visible=off und bmap_purge
stehen. Ich werde sie erst dann wieder los, wenn etwas neues, bildfüllendes angezeigt wird,
wie z.B. ein sehr großes nicht-transparentes Panel oder ein Vollbild-View. Ohne das Flag d3d läuft alle ganz normal, aber es sieht nicht schön aus und ich kann ohne
Alphawert nicht faden.
Kennt jemand ähnliche Effekte oder hat eine Idee das zu lösen ???
Gruß
Christian
Bones
---
www.circuit01.com
"Ich habe genügend Vorstellungskraft um Dinge zu machen, von denen ich keine Ahnung habe." - Martin Scorsese
|
|
|
Re: Panels mit d3d lassen sich nicht abschalten
#10481
09/29/02 21:20
09/29/02 21:20
|
Joined: Sep 2002
Posts: 1,604 Deutschland
ChrisB
Serious User
|
Serious User
Joined: Sep 2002
Posts: 1,604
Deutschland
|
Hi, du musst code:
Panelname.transparent = on;Panelname.alpha = 100;while (Panelname.alpha >= 0) { Panelname.alpha -= 2; wait(1); }
schreiben dann müsste es gehen.
|
|
|
Re: Panels mit d3d lassen sich nicht abschalten
#10482
09/29/02 21:55
09/29/02 21:55
|
Joined: May 2002
Posts: 752 Frankenthal Pfalz/ Germany
Rich E.
Developer
|
Developer
Joined: May 2002
Posts: 752
Frankenthal Pfalz/ Germany
|
Ich hätte hier mal eine Möglichkeit anhand des Standard Splashscreens für dich. code:
panel splashscreen { bmap = splashmap; alpha = 0; flags = transparent,refresh,d3d; }
function main() { ... splashscreen.visible = on; waitt(32); //kann man auch weglassen //Splashscreen einblenden while (splashscreen.alpha <100) { splashscreen.alpha +=2*time; wait(1); } ... // now load the level level_load(level_str); ... //Splashscreen ausblenden splashscreen.alpha = 100; while (splashscreen.alpha >0) { splashscreen.alpha -=3*time; wait(1); } splashscreen.visible = off; bmap_purge(splashmap); // remove splashscreen from video memory ... } // Ende main
Bei diesem Beispiel solltest du noch folgendes beachten. Und zwar sollte das Level, bevor du den Splshscreen ausblenden lässt, geladen haben, sonst klappt das nicht (da nichts im Hintergrund ist). Außerdem ist der Schwarzanteil dieses Splashscreens ziemlich hoch, sodass es mit dem transparent flag nicht so gut aussieht. Deshalb setze ich die Helligkeit der Panels mittels Grafikprogramm immer so hoch, dass der schwärzeste Teil einen Farbwert von min. 11,11,11 (RGB) hat.
Generell gehe ich so vor, dass ich ein schwarzes Panel (Farbwert 11,11,11) bei einer Menü- oder Introanzeige immer in den Hintergrund lege (per Layer). So kann man die übrigen Panels beliebig ein und ausblenden und das "Schwarzpanel" wird dann ganz am Schluß, nach dem der Level geladen wurde (und das Spiel beginnen soll) ausgeblendet.
Ich hoffe es hilft dir ein wenig.
Rich E.
|
|
|
Re: Panels mit d3d lassen sich nicht abschalten
#10483
10/01/02 00:27
10/01/02 00:27
|
Joined: Apr 2002
Posts: 119 Germany
Bones
OP
Member
|
OP
Member
Joined: Apr 2002
Posts: 119
Germany
|
Hallo Chris & Rich!
Danke für eure Antworten, aber so weit war ich schon. Wie gesagt, der Code läuft. Wenn ich mir den Alphawert anzeigen lasse, sieht man, daß er tatsächlich vom Skript auch verändert wird. Aber das Panel verändert sich trotzdem nicht. Ich glaube, das ist ein Grafikkartenproblem. Denn selbst wenn ich das Panel nicht transparent mache und nicht an Alpha rumschraube, funktioniert selbst die einfache Anweisung panel.visible = OFF; nicht. Das müßte doch eigentlich irgendeine Wirkung haben. Ist aber nicht! Es läuft normal ab ohne das Flag d3d, aber mit dem Flag bekomme ich die Panels nicht mehr aus dem Grafikspeicher.
Bones
---
www.circuit01.com
"Ich habe genügend Vorstellungskraft um Dinge zu machen, von denen ich keine Ahnung habe." - Martin Scorsese
|
|
|
Re: Panels mit d3d lassen sich nicht abschalten
#10485
10/01/02 17:06
10/01/02 17:06
|
Joined: Apr 2002
Posts: 119 Germany
Bones
OP
Member
|
OP
Member
Joined: Apr 2002
Posts: 119
Germany
|
Hallo Rich und ihr anderen! Natürlich habe ich refresh gesetzt! Aber ich habe die Lösung gefunden: Das Problem war, daß ich zu Beginn des Spiels mehrere Logos nacheinander einblenden wollte. Das Ausblenden funktioniert aber nicht, wenn nichts anderes im Hintergrund zu sehen ist. Wenn ich ein bildfüllendes schwarzes Panel zuerst lade, kann ich darüber ein und ausblenden. Mir ist nämlich aufgefallen, daß das Ausblenden funktionierte sobald der Level geladen und der View eingeschaltet war. Also: Man kann scheinbar den Grafikspeicher nicht ganz leer machen. So klappt's aber. Danke für eure Bemühungen.
Bones
---
www.circuit01.com
"Ich habe genügend Vorstellungskraft um Dinge zu machen, von denen ich keine Ahnung habe." - Martin Scorsese
|
|
|
Re: Panels mit d3d lassen sich nicht abschalten
#10487
10/01/02 20:27
10/01/02 20:27
|
Joined: Apr 2002
Posts: 119 Germany
Bones
OP
Member
|
OP
Member
Joined: Apr 2002
Posts: 119
Germany
|
Hi Rich!
Ja stimmt! Ich hatte zunächst nur dein Listing überflogen. Ist mir nachher auch aufgefallen... Danke nochmals! Klappt jetzt alles!
Christian
Bones
---
www.circuit01.com
"Ich habe genügend Vorstellungskraft um Dinge zu machen, von denen ich keine Ahnung habe." - Martin Scorsese
|
|
|
|