Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 23-05-2005, 09:01   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
schieberegler mit einer werte range

wie erstelle ich einen schieberegler mit einer range. zb einen anfangswert von Wert x bis wert y.

ich habe schon einen mit 0-100%. da habe ich das so gemacht:

ActionScript:
  1. wert = Math.round(slider._x/ dif * 100)

slider._x ist dabei der die pos x des reglers der verschoben werden kann und dif ist der der abstand zwischen dem min und dem max wert den der slider haben kann.

jetzt brauch ich aber das gleiche für eine range von 2 werten, kann mir da jmd einen ansatz geben?

danke und grüße
agent007 ist offline   Mit Zitat antworten
Alt 23-05-2005, 09:37   #2 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
Hi,

versuch's mal damit:
ActionScript:
  1. var dif  = 100;
  2. var minValue    = 10;
  3. var maxValue    = 50;
  4. var wert = Math.round(slider._x / dif * (maxValue - minValue)) + minValue;
gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 23-05-2005, 09:43   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
das schaut doch echt ganz gut aus.
danke!

Geändert von agent007 (23-05-2005 um 12:22 Uhr)
agent007 ist offline   Mit Zitat antworten
Alt 31-05-2005, 12:31   #4 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
hi, jetzt habe ich doch nochmal eine frage:

ActionScript:
  1. function test()
  2. {
  3. var dif  = 200;
  4. var minValue    = 0;
  5. var maxValue    = 300;
  6. var wert = Math.round(slider._x / dif * (maxValue - minValue)) + minValue;
  7. }

ich beweg den slider bei einem klick auf den pfeilbutton links um += 1 px oder rechts um -= 1px
und rufe dann die funktion zb. "test" auf. die werte werden ja aufgerundet, daher bekomm ich nie wertsprünge von 1 so wie ich das gerne hätte. (also 0 - 300 und bei jedem klick eine wert um 1 höher)

hat jmd eine idee?

grüße
agent007 ist offline   Mit Zitat antworten
Alt 31-05-2005, 14:38   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
Hi,

benutz' am besten zwei Funktionen.
1) Um den Wert aus der Slider-Position zu berechnen.
2) Um die Slider-Position aus dem Wert zu berechnen.
ActionScript:
  1. // Variablen zur Slider-Initialisierung
  2. var dif = 200; // Slider-Länge in Pixeln
  3. var minValue = 0; // kleinster möglicher Wert des Sliders
  4. var maxValue = 300; // größter möglicher Wert des Sliders
  5. var sliderValue = 0; // aktueller Wert des Sliders
  6.  
  7. // 1) Berechnet den Wert aus der Slider-Position
  8. function setSliderPosition(x){
  9. slider._x = Math.round(Math.max(0, Math.min(dif, x)));
  10. sliderValue = Math.round(slider._x / dif * (maxValue - minValue)) + minValue;
  11. }
  12.  
  13. // 2) Berechnet die Slider-Position aus dem Wert
  14. function setSliderValue(val){
  15. sliderValue = Math.round(Math.max(minValue, Math.min(maxValue, val)));
  16. slider._x = Math.round(sliderValue * dif / (maxValue - minValue)) - minValue;
  17. }
Um den Wert des Sliders um 1 zu erhöhen rufst du dann einfach
ActionScript:
  1. setSliderValue(sliderValue + 1);
auf.
Dadurch wird der neue Wert gesetzt, und der Slider direkt verschoben.
Außerdem sorgen beide Funktionen dafür, dass die übergebenen Werte im gültigen Bereich gehalten werden.

gruß,
roman

Geändert von romän (31-05-2005 um 14:43 Uhr)
romän ist offline   Mit Zitat antworten
Alt 31-05-2005, 16:40   #6 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
klappt super danke.
agent007 ist offline   Mit Zitat antworten
Alt 08-06-2005, 16:27   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
jetzt will ich aber noch einen drauf setzten

habe jetzt 2 eingabefelder drunter, das man zb bei einem regler von 0-100%
eingeben kann.
ActionScript:
  1. eingabe_1.onChanged = function()
  2. {
  3.     setSliderValue(wert_1);
  4. }
  5. eingabe_2.onChanged = function()
  6. {
  7.     setSliderValue(wert_2);
  8. }

wobei zb. wert_1 der wert ist den man in das eingabefeld eingibt.

bei eingabe_1 geht das ja noch aber bei eingabe_2 haut das ja nicht mehr hin!

weil ich ja wenn ich eingabe_2 60 eingebe, dann sollte der setSliderValue(40) aufrufen oder?

aber so geht es auch net ;(
ActionScript:
  1. eingabe_2.onChanged = function()
  2. {
  3.     setSliderValue(100 - wert_1);
  4. }

was mach ich da falsch?

Geändert von agent007 (08-06-2005 um 16:38 Uhr)
agent007 ist offline   Mit Zitat antworten
Alt 09-06-2005, 08:43   #8 (permalink)
Neuer User
 
Registriert seit: Mar 2002
Ort: D'dorf
Beiträge: 765
Hi,

du meinst ja sowas:
Zitat:
Zitat von agent007 (pm)
zb Frage:
Wo geht ihr lieber aus?

< ------X--------------------------- >
Disco Bar
20% 80%
Dann müsste eingabe_2 diesen onChanged-Handler haben:
ActionScript:
  1. eingabe_2.onChanged = function(){
  2. setSliderValue(100 - wert_2);
  3. }
Außerdem solltest du vielleicht noch wert_1 direkt ändern, wenn wert_2 geändert wird, und umgekehrt. Sinnvoll wäre es auch die Eingabefelder auf max. 3 Zahlen zu beschränken und zu prüfen, ob der eingegebene Wert überhaupt eine Zahl ist, oder evtl. größer als 100? ...

Hier mal etwas Code für eingabe_2:
ActionScript:
  1. //beschränkt die Eingabemöglichkeit auf Zahlen
  2. eingabe_2.restrict = "0-9";
  3. // erlaubt max. 3 Zeichen
  4. eingabe_2.maxChars = 3;
  5. eingabe_2.onChanged = function(){
  6. // wert_2 ist ein String -> in Zahl konvertieren
  7. var zahl = parseInt(wert_2);
  8. // wenn wert_2 in eine Zahl umgewandelt werden konnte, dann...
  9. if(!isNaN(zahl)){
  10. // wenn > als 100 dann zurück auf 100 setzen
  11. if(zahl > 100) zahl = wert_2 = 100;
  12. setSliderValue(100 - zahl);
  13. // wert_1 entsprechend anpassen
  14. wert_1 = 100 - zahl;
  15. }
  16. };
Code für eingabe_1 ist identisch außer setSliderValue(zahl).

gruß,
roman
romän ist offline   Mit Zitat antworten
Alt 09-06-2005, 09:32   #9 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
nochmal ein ganz GROSSES DANKE!
So jetzt nerv ich nicht mehr...aber ich bin um einiges schlauer
agent007 ist offline   Mit Zitat antworten
Alt 08-07-2005, 16:03   #10 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
Zitat:
Zitat von romän
Hi,

benutz' am besten zwei Funktionen.
1) Um den Wert aus der Slider-Position zu berechnen.
2) Um die Slider-Position aus dem Wert zu berechnen.
ActionScript:
  1. // Variablen zur Slider-Initialisierung
  2. var dif = 200; // Slider-Länge in Pixeln
  3. var minValue = 0; // kleinster möglicher Wert des Sliders
  4. var maxValue = 300; // größter möglicher Wert des Sliders
  5. var sliderValue = 0; // aktueller Wert des Sliders
  6.  
  7. // 1) Berechnet den Wert aus der Slider-Position
  8. function setSliderPosition(x){
  9. slider._x = Math.round(Math.max(0, Math.min(dif, x)));
  10. sliderValue = Math.round(slider._x / dif * (maxValue - minValue)) + minValue;
  11. }
  12.  
  13. // 2) Berechnet die Slider-Position aus dem Wert
  14. function setSliderValue(val){
  15. sliderValue = Math.round(Math.max(minValue, Math.min(maxValue, val)));
  16. slider._x = Math.round(sliderValue * dif / (maxValue - minValue)) - minValue;
  17. }
Um den Wert des Sliders um 1 zu erhöhen rufst du dann einfach
ActionScript:
  1. setSliderValue(sliderValue + 1);
auf.
Dadurch wird der neue Wert gesetzt, und der Slider direkt verschoben.
Außerdem sorgen beide Funktionen dafür, dass die übergebenen Werte im gültigen Bereich gehalten werden.

gruß,
roman
funkt aber nicht mit minValue = 100 und maxValue = 300 oder? zumindest die setSliderValue Function!!
agent007 ist offline   Mit Zitat antworten
Alt 11-07-2005, 15:57   #11 (permalink)
Neuer User
 
Registriert seit: Mar 2004
Beiträge: 60
wenn es interessiert, so geht es

slider._x = Math.round((sliderValue - minValue) * dif / (maxValue - minValue));

Geändert von agent007 (12-07-2005 um 09:54 Uhr)
agent007 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele