Seite 2 von 2
Re: ScrollAreaGadget IM Screen
Verfasst: 07.11.2010 23:22
von PureLust
Bisonte hat geschrieben:Jo so funktioniert das beispiel... Aber wie bereits erwähnt, ist das 3D Zeugs nicht wirklich was für mich...
Ist ja nochmehr Mathematik drin
Wie gesagt - hab mit 3D bisher auch noch nichts gemacht, aber soweit ich das bisher so mitbekommen habe kann man ganz normal mit 2D seine Grafik rendern und dann die 3D-Gadgets einfach mit "RenderWorld()" darüber legen.
Also ohne jeglichen anderen 3D-Kram und somit auch "ohne Mathematik".

Re: ScrollAreaGadget IM Screen
Verfasst: 07.11.2010 23:30
von STARGÅTE
Hier mal n einfaches Beispiel:
Links: Einträge, Rechts Scroller.
Scroller gedrückt halten und verschieben ^^
Später köntne man dnan noch mehr funktionen einbauen:
Code: Alles auswählen
InitSprite()
OpenWindow(0, 0, 0, 800, 600, "Screen", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0), WindowHeight(0), 0, 0, 0)
#Size = 100
Global Dim Text.s(#Size)
For n = 0 To #Size
Text(n) = "Eintrag "+Str(n)
Next
Repeat
ClearScreen(0)
StartDrawing(ScreenOutput())
DrawingMode(1)
DrawingMode(1|4)
ItemHeight = TextHeight("|")
ViewItems = 20
ViewHeight = ItemHeight * ViewItems
Items = ArraySize(Text())+1
Height = ItemHeight * Items
BoxHeight = ViewHeight*ViewHeight/Height
If Move
BoxY = SaveBoxY + WindowMouseY(0)-SaveMouseY
Start = Height*BoxY/ViewHeight/TextHeight("|")
If Start < 0 : BoxY = 0 : Start = 0 : EndIf
If Start > Items-20 : BoxY = ViewHeight-BoxHeight : Start = Items-20 : EndIf
EndIf
Box(100, 100, 400, TextHeight("|")*20, $FFFFFF)
Box(470, 100, 30, TextHeight("|")*20, $FFFFFF)
For n = 0 To 19
DrawText(100, 100+n*TextHeight(Text(n+Start)), Text(n+Start), $808080)
Next
DrawingMode(1)
Box(470, 100+BoxY, 30, BoxHeight, $C0C0C0)
StopDrawing()
FlipBuffers()
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case 513 ; Anschlag
If WindowMouseX(0) > 470 And WindowMouseX(0) < 500 And WindowMouseY(0) > 100+BoxY And WindowMouseY(0)< 100+BoxY+BoxHeight
SaveMouseY = WindowMouseY(0)
SaveBoxY = BoxY
Move = #True
EndIf
Case 514 ; Loslassen
Move = #False
EndSelect
ForEver
Re: ScrollAreaGadget IM Screen
Verfasst: 07.11.2010 23:43
von Bisonte
Danke Stargate
Mit deinem Ansatz von wegen Anzeigebereich usw, war ich jetzt schonmal soweit ein scrollarea mit tastatur
zu bedienen
Nun versuch ich dein Beispiel mit der Maus mal zu verdauen.
Aber genau so (natürlich mit anderen Grafiken) wollt ich das eigentlich machen...
Re: ScrollAreaGadget IM Screen
Verfasst: 07.11.2010 23:56
von PureLust
Bisonte hat geschrieben:Aber genau so (natürlich mit anderen Grafiken) wollt ich das eigentlich machen...
Jo, wirste wohl so machen müssen, denn mit den 3D-Gadgets scheint das so garnicht zu funktionieren.
Hab' mich inzwischen mal ein wenig mehr in die 3D-Geschichte eingelesen und ein Mix aus 3D und 2D ist wohl nicht ohne Weiteres möglich.
Und ein "drüber legen" der 3D-Gadgets über die 2D Grafiken wohl erst recht nicht.
ScrollAreaGadget3D() ist für Dein Vorhaben also wohl vollkommen unbrauchbar, ... sorry.
