Gui Schieberegler

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

StarGazer

Betreff: Gui Schieberegler

BeitragMi, Dez 17, 2003 21:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Ich möchte gern ein Schieberegler in mein Game einbauen, jedoch habe ich keine Ahnung wie das gehen soll.
Er soll unabhängig von der Anzahl der Objekte in der Liste, diese durchsrollen, also prozentual, wie BS der Windowsregler.

Der Code hier zeigt auf, welches Problem ich damit habe.
Vielleicht habt ihr schon so etwas programmiert und könnt mir weiterhelfen.


Code: [AUSKLAPPEN]
Graphics3D 640,480,0,2
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()
PositionEntity camera,0,0,-10
RotateEntity light,90,0,0
Backround=CreateCube()
EntityColor Backround,0,0,0
ScaleEntity Backround,20,15,0.2
EntityPickMode Backround,2
PositionEntity Backround,0,0,10
control=CreateCube()
EntityColor control,64,255,128
ScaleEntity control,1,3,0.2
PositionEntity control,17,0,8
window=CreateCube()
EntityColor window,16,64,64
ScaleEntity window,6,18,0.2
PositionEntity window,16,0,10


a = -40
Dim List(137)
For i = 1 To 16
   a = a + 3
   List(i)=CreateCube()
   EntityColor List(i),Rnd(255),Rnd(255),Rnd(255)
   PositionEntity List(i),12,a,10
Next
   

While Not KeyDown(1)

   ent=CameraPick(camera,MouseX(),MouseY())
   old_y# = y#
   y#=PickedY()
   PositionEntity control,17,y,8
   ; Begrenzung der Reglerposition
   If EntityY(control) < -11 Then PositionEntity control,17,-11,8
   If EntityY(control) > 11 Then PositionEntity control,17,11,8

   ; die Objekte verschieben
   For i = 1 To 16
      If old_Y < y Then a = y - old_y :MoveEntity List(i),0,a,0
      If old_Y > y Then b = old_y - y :MoveEntity List(i),0,-b,0
   Next

UpdateWorld
RenderWorld

Flip
Wend
End



wäre für Hilfe dankbar.
StarGazer

BladeRunner

Moderator

BeitragMi, Dez 17, 2003 21:46
Antworten mit Zitat
Benutzer-Profile anzeigen
a=-30
.
.
.
.
For i = 1 To 16
If old_Y < y Then a = y - old_y :MoveEntity List(i),0,-a,0
If old_Y > y Then b = old_y - y :MoveEntity List(i),0,b,0
Next
...
dürfte dich der sache schon mal näher bringen.
Dann hakts noch ein bissl, aber die Richtung stimmt schon mal

EDIT:
Allerdings müsstest du den Listeneinträgen ein Max und minY zuweisen, sonst kannst du mit geschickter "mauspielerei" doch noch die Liste zum Verschwinden bringen ...
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

StarGazer

BeitragDo, Dez 18, 2003 0:30
Antworten mit Zitat
Benutzer-Profile anzeigen
den Code habe ich nur als BS gemeint, wenn man ein prozentualen Schieberegler machen will, muß man es sicher ganz anderes angegen. Denn was ist wenn die Liste mal 300-500 Stellen lang ist, dann passt es nie auf den Screen, die Liste muß sich dann dem Schieberegler anpassen.
Daher die Frage ob jemand schon sowas mal gemacht hat und dafür eine Lösung weist.

BladeRunner

Moderator

BeitragDo, Dez 18, 2003 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
da muß ich passen.... hab derzeit auch nicht genug Zeit zum Grübeln (und hab mit 3d bislang nit richtig gearbeitet). Sorry.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

TheShadow

Moderator

BeitragDo, Dez 18, 2003 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
anzahl der zeilen =500
gesamthöhe=500x20=10000 (20 so als beispiel)
scrollbalkenhöhe=1000px

10000/1000=1/10 von 1000 = scrollbalken ist 100 px
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

StarGazer

BeitragSa, Dez 20, 2003 12:59
Antworten mit Zitat
Benutzer-Profile anzeigen
meinst du damit den Schieberegler selbst der seine Größe/Länge verändert ?
Ich meinte eigentlich, wenn der Balken ganz oben am Bildschirmrand ist, man auch den Obersten Eintrag sehen kann, und ganz unten den untersten Eintrag der Liste sehen kann, egal wie we groß/klein die Liste auch ist.
Vielleicht kann man das dennoch aus deiner Formel basteln.
Ich probier es mal, danke.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group