Image Buttons unter Draw3D
Übersicht

funkmaster5000Betreff: Image Buttons unter Draw3D |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Community!
Ich befasse mich jetzt so langsam mit Draw3D, es ist wirklich eine tolle Erweiterung. Derzeit versuche ich etwas (vermeintlich) ganz einfaches: ein Bild auf dem Screen soll als Button dienen, und zwar nicht für eine GUI (dafür gibts ja die SGG) sondern einfach, um einen Infotext darüber anzuzeigen, sobald der User darüberfährt (oder klickt). Ich habe mir die Mausbefehle angesehen und ein bisschen experimentiert, um zu sehen, was sie bewirken und habe mir auch das Beispiel "Stuff, Image Buttons.bb" angesehen. Dem entnehme ich, dass folgende Befehle existieren: MouseOver3D MouseDown3D MousePit3D MouseHit3D MouseTest3D Dazu habe ich 2 Fragen: Was macht MousePit3D? Auf die Beispiel.bb bezogen: Am unteren Bildschirmrand wird je nach Button eine Zahl zurückgeliefert, zusammen mit "Test", also Test 1, Test 2 usw. Wie finde ich heraus, über welchem Bild sich die Maus befindet? Liefert ein Befehl ein Handle zurück? Oder muss ich die Koordinaten checken? Es muss etwas mit dem Befehl MouseTest3D zu tun haben, aber in meinem Versuch bleibt der Wert 0, auch, wenn ich mich über einem Button befinde. Hat das etwas mit dem "Glow" zu tun, der dem Button in dem Beispiel zugewiesen wird? Danke im Voraus. Hier ist nochmal mein Beispiel (nur als Experiment), bei dem mir auch klar ist, dass man keine 2D Befehle mit 3D Befehlen mischen soll, aber ist ja nur zum ausprobieren. Code: [AUSKLAPPEN] Graphics3D 640,480,32,2 SetBuffer BackBuffer() Local Camera = CreateCamera() Include "C:\Programme\Blitz3D\userlibs\Includes\Draw3D2.bb" DrawInit3D(Camera) planet1 = LoadImage3D ("gfx\planet1.png",4) While Not KeyHit(1) Cls DrawImage3D(planet1,10,10) RenderWorld Clear3D() Text 0,0,MouseOver3D Text 0,10,MouseDown3D Text 0,20,MouseTest3D Flip 0 Wend End |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
versuch das mal und klick auf das Bild ![]() Code: [AUSKLAPPEN] Graphics3D 640,480,32,2 SetBuffer BackBuffer() Local Camera = CreateCamera() Include "C:\Programme\Blitz3D\userlibs\Includes\Draw3D2.bb" DrawInit3D(Camera) planet1 = LoadImage3D ("gfx\planet1.png",4) timer=createtimer(timer) While Not KeyHit(1) DrawImage3D(planet1,10,10) If MouseOver3D And Mousehit(1) Then End UpdateWorld() RenderWorld() Clear3D() waittimer(timer) Flip 0 Wend End MouseOver3D bezieht sich immer auf das zuletzt gezeichnete. Nach Clear3D() kannst du es meiner Meinung nach garnichtmehr richtig verwenden ô.O |
||
Twitter
Download Jewel Snake! Windows|Android |
- Zuletzt bearbeitet von Tankbuster am Mo, Dez 03, 2012 21:58, insgesamt einmal bearbeitet
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Da tut sich bei mir leider nichts. Sollte ja eigentlich beenden. Komisch, dass das nicht geht, ich hab nur Copy&Paste bemüht!
Das hier ist der Code, der bei Draw3D mitgeliefert wird. Interessant ist diese Stelle, da sie zeigt, über welchem Button die Maus als letztes war: Text3D(Font1,-40,-140,MouseTest3D+" - Test",0): Code: [AUSKLAPPEN] Graphics3D 1024,768,0,2 SetBuffer BackBuffer() Local Timer=CreateTimer(58) Local Camera=CreateCamera() CameraClsColor Camera,64,64,64 Include "..\Includes\Draw3D2.bb" DrawInit3D(Camera) Local LoadedFont=LoadImage3D("..\Fonts\KarmaticArcade · (33).png",2,2,0,-100) Local Font1=FontRange3D(LoadedFont) Local Font2=FontRange3D(LoadedFont) SetFont3D(Font1,1,1,-4,0) SetFont3D(Font2,1,1,-4,8) Local LoadedImage=LoadImage3D("..\Data\Draw3D2.png",2,2,0,-1) Local GlowImage=LoadImage3D("..\Data\Glow.png",2,2,0,-2) GrabImage3D(GlowImage,32,32,2,2) Local GrabedImage=GrabImage3D(LoadedImage,176,98,160,76) Local Angle# While Not KeyHit(1) Angle=MilliSecs()/1000.0*45 DrawImage3D(GrabedImage,-260,+80,GlowImage,-Angle) Text3D(Font1,-300,-20,MouseOver3D+" - Over",0) Text3D(Font1,-300,-40,MouseDown3D+" - Down",0) Text3D(Font1,-300,-60,MousePit3D+" - Pit",0) Text3D(Font1,-300,-80,MouseHit3D+" - Hit",0) DrawImage3D(GrabedImage, 0,+80,GlowImage,+Angle) Text3D(Font1,-40,-20,MouseOver3D+" - Over",0) Text3D(Font1,-40,-40,MouseDown3D+" - Down",0) Text3D(Font1,-40,-60,MousePit3D+" - Pit",0) Text3D(Font1,-40,-80,MouseHit3D+" - Hit",0) DrawImage3D(GrabedImage,+260,+80,GlowImage,-Angle) Text3D(Font1,+220,-20,MouseOver3D+" - Over",0) Text3D(Font1,+220,-40,MouseDown3D+" - Down",0) Text3D(Font1,+220,-60,MousePit3D+" - Pit",0) Text3D(Font1,+220,-80,MouseHit3D+" - Hit",0) Text3D(Font1,-40,-140,MouseTest3D+" - Test",0) Text3D(Font1,-40,+180,"Mouse ... 3D",0) Text3D(Font2,-460,+340,"Draw3D2 V.1.0",0) Text3D(Font2,+460,+340,"Time: "+CurrentTime(),2) Text3D(Font1,0,-340,"CHECK · EASY-BUTTONS · CHECK",1,0,Sin(MilliSecs())) WaitTimer Timer RenderWorld Clear3D() Flip 0 Wend End ;~IDEal Editor Parameters: ;~C#Blitz3D |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
UpdateWorld()
und das CLS musst du weglassen. Das brauchst du bei 3D nicht. Dann sollte es funktionieren ![]() Edit: Code oben berichtigt. Sry, darauf hab ich nicht geachtet, weil ich dachte, die Grundlagen wären in diesem Fall klar.... ~_~ |
||
Twitter
Download Jewel Snake! Windows|Android |
funkmaster5000 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Grundlagen eigne ich mir gerade an.
Ja jetzt geht es, allerdings war in meinem Beispiel das Bild noch nicht als Button definiert bei DrawImage3D. Was mir allerdings leider noch nicht die Frage mit diesem MouseTest3D beantwortet und wieso man darüber in dem Beispiel die Nummer des Buttons herausfindet. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
MousePit3D ist immer dann TRUE, wenn der Mauszeiger über ein Button gefahren ist. Und zwar nur ein Frame, danach ist es wieder FALSE. Erst wenn die Maus aus dem Bild aus- und wieder raufgefahren wird, ist MousePit3D einmal kurz TRUE. Kann zum Beispiel als leise Soundausgabe für gefühlvolleres Bewegen auf einem Schachbrettmuster oder Spielemenü verwendet werden (If MousePit3D=1 Then PlaySound...). Ist allerdings fehlerhaft, wenn sich die Maus genau über zwei überlappende Buttons gleichzeitig befindet, was jedoch den Anwendungszweck verfehlt. MousePit3D ist ein Produkt, was ich praktisch gratis aus der internen Verarbeitung erhalten habe und ein mühseliges Programmieren ersparen kann, wenn man so eine Funktion benötigt. ![]() MouseTest3D ist einfach das Ergebnis, dass den Wert des in Reihenfolge gezeichneten Buttons ergibt über welchen sich die Maus gerade befindet. Kann beispielsweise verwendet werden, wenn man bei einem Schachbrett/Tilemap etc... nicht jeden Button selbst bestimmen, sondern am Ende es als ''Indizes'' verwenden möchte. Beispiel: Jeder Button hat bestimmte Eigenschaften die in einer Datenbank nacheinander eingetragen sind. Wenn man nun die Buttons einzeichnet, kann mit jeden Button alá If MouseOver3D abfragen und eine Aktion ausführen. Oder man zeichnet einfach die Buttons ein und führt am Ende einmal Wert=ArrayName(MouseTest3D) aus. Vorausgesetzt natürlich, die Anzahl der Buttons variiert nicht ständig. Auch hier nur ein Nebenprodukt aus der internen Draw3D-Verabeitung welche (aber auch nur selten) sehr hilfreich sein kann. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group