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 :allright:

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. :|