Skip to main content
May 27, 2013
Answered

Double slider button (min/max)

  • May 27, 2013
  • 1 reply
  • 1128 views

Hello

I am working on a calculator project with sliders. Now 1 slider needs to have a double button with min and max. I have tried to use examples from others but i can not get it to work in the current script. I hope someone can help me.

This one needs to be double:

// skill slide

skillSb.addEventListener(Event.CHANGE,onSkilChange)

[code]import fl.controls.ComboBox

import fl.controls.Slider

import fl.controls.DataGrid

import fl.controls.dataGridClasses.DataGridColumn

import fl.data.DataProvider

///////////////////////////

var levelArray:Array=new Array("disastrous","wretched","poor","weak","inadequate","passable","solid","excellent","formidable","outstanding","brilliant","magnificent","worldclass","supernatural","titanic","extra-terrestrial","mythical","magical","utopian","divine")

var trainingArray:Array=new Array("Goalkeeping","Defending","Defensive Positions","Crossing","WingAttack","Playmaking","Scoring","Shooting","Short Passes","Through Passes","Set Pieces")

var trainingBase:Array=new Array(3.0206,5.4824,10.9648,3.2341,5.3902,4.6613,4.8536,8.0893,4.2989,5.0575,0.9938)

// years slide

yearsSb.addEventListener(Event.CHANGE,onYearsChange)

// days slide

daysSb.addEventListener(Event.CHANGE,onDaysChange)

// skill slide

skillSb.addEventListener(Event.CHANGE,onSkilChange)

// sublevel slide

subSb.addEventListener(Event.CHANGE,onSubChange);

// coach slide

coachSb.addEventListener(Event.CHANGE,onCoachChange)

// assistans slide

assSb.addEventListener(Event.CHANGE,onAssChange)

// intensity slide

intensitySb.addEventListener(Event.CHANGE,onIntensityChange)

// stamina slide

staminaSb.addEventListener(Event.CHANGE,onStaminaChange)

for (var i=0;i<trainingArray.length;i++){

          trainingCb.addItem({label:trainingArray, data:trainingBase})

}

trainingCb.addEventListener(Event.CHANGE,changeEvent)

trainingCb.selectedIndex=0

// datagrid

//dg.columns = ["Week", "Skill", "Length", "Age" ];

var weekCol:DataGridColumn=new DataGridColumn()

weekCol.dataField="Week"

weekCol.sortOptions = Array.NUMERIC;

weekCol.width=50

dg.addColumn(weekCol)

var skillCol:DataGridColumn=new DataGridColumn()

skillCol.dataField="Skill"

skillCol.width=150

skillCol.sortOptions = Array.NUMERIC;

dg.addColumn(skillCol)

var lengthCol:DataGridColumn=new DataGridColumn()

lengthCol.dataField="Length"

lengthCol.width=75

dg.addColumn(lengthCol)

var ageCol:DataGridColumn=new DataGridColumn()

ageCol.dataField="Age"

ageCol.width=75

dg.addColumn(ageCol)

// variables

var years:Number

var days:Number

var yearsFactor:Number

var level:Number

var subLevel:Number

var levelFactor:Number

var trainingFactor:Number

var coachFactor:Number

var assistentsFactor:Number

var intensity:Number

var stamina:Number

var weeks:Number

var skillUp:Number

var baseLevel:Number

var newLevel:Number

// initialise graph mc

var graphMc:MovieClip=new MovieClip()

graphMc.x=80

graphMc.y=680

for(i=0;i<levelArray.length;i++){

          var skilLab:skillLabel=new skillLabel()

          skilLab.txt.text=levelArray

          skilLab.name="sl"+i

          skilLab.x=30

          var graphPoint:point=new point()

          graphPoint.name="gp"+i

          graphMc.addChild(skilLab)

          graphMc.addChild(graphPoint)

}

addChild(graphMc)

// events

function onYearsChange(e){

          yearsVal.text=yearsSb.value.toString()

          calc()

}

function onDaysChange(e){

          daysVal.text=daysSb.value.toString()

          calc()

}

function onSkilChange(e){

          skillVal.text=levelArray[skillSb.value-1]

          calc()

}

function onSubChange(e){

          subVal.text=((subSb.value)/10).toString()

          calc()

}

function onCoachChange(e){

          coachVal.text=levelArray[coachSb.value-1]

          calc()

}

function onAssChange(e){

          assVal.text=assSb.value.toString()

          calc()

}

function onIntensityChange(e){

          intensityVal.text=intensitySb.value.toString()

          calc()

}

function onStaminaChange(e){

          staminaVal.text=staminaSb.value.toString()

          calc()

}

function changeEvent(e){

          calc()

}

calc()

function calc(){

 

          years=yearsSb.value

          days=daysSb.value

          level=skillSb.value

          subLevel=subSb.value/10

 

          yearsFactor=Math.pow(1.0404,years+days/112-17)

          levelFactor=-1.4595*Math.pow((level+subLevel)/20,2)+3.7535*(level+subLevel)/20-0.1349

 

          trainingFactor=trainingBase[trainingCb.selectedIndex]

          coachFactor=1+(7-Math.min(coachSb.value,7.5))*0.091

          assistentsFactor=1+(1.041392685-(Math.log(assSb.value+1))*Math.LOG10E)*0.2749

          intensity=1/(intensitySb.value/100)

          stamina=1/(1-staminaSb.value/100)

          weeks=yearsFactor*levelFactor*trainingFactor*coachFactor*assistentsFactor*intensity*stamina

          weeks=Math.max(weeks,1)

          skillUp=1/weeks

          baseLevel=level+subLevel

          newLevel=baseLevel

          var dosta:Boolean=false

          var weeksNo:Number=0

          var weeksCount:Number=0

          var dp:DataProvider=new DataProvider()

          while(!dosta){

                    weeksNo++

                    weeksCount++

                    days+=7

                    if(days>111){

                              years++

                              days=days-112

                    }

                    reCalc()

                    newLevel+=skillUp

                    if((newLevel-level)>=1){

                              dp.addItem({ Week: weeksNo, Skill: (Math.floor(newLevel))+"-"+levelArray[Math.floor(newLevel)-1], Length:weeksCount+" weeks", Age:years+"y "+days+"d" })

                              level++

                              weeksCount=0

                    }

                    if(newLevel>=20 || years>=31){

                              dosta=true

                    }

 

          }

          dg.dataProvider=dp

          drawGraph(dp)

}

function reCalc(){

          yearsFactor=Math.pow(1.0404,years+days/112-17)

          levelFactor=-1.4595*Math.pow(newLevel/20,2)+3.7535*newLevel/20-0.1349

          weeks=yearsFactor*levelFactor*trainingFactor*coachFactor*assistentsFactor*intensity*stamina

          weeks=Math.max(weeks,1)

          skillUp=1/weeks

}

function drawGraph(dp){

          if(dp.length>0){

                    var lastRow=dp.getItemAt(dp.length-1)

                    var weekNo:Number=parseInt(lastRow.Week)

                    var topSkill:Number=parseInt(lastRow.Skill)

                    var firstRow=dp.getItemAt(0)

                    var baseSkill:Number=parseInt(firstRow.Skill)-1

                    var skillH=300/(topSkill-baseSkill)

                    var weekW=450/weekNo

                    graphMc.graphics.clear()

                    // draw greed

                    graphMc.graphics.lineStyle(2,0xffffff)

                    graphMc.graphics.moveTo(50,0)

                    graphMc.graphics.lineTo(50,300)

                    graphMc.graphics.lineTo(500,300)

                    graphMc.graphics.lineStyle(1,0xcccccc)

                    for (i=0;i<weekNo+1;i++){

                              graphMc.graphics.moveTo(50+(450/weekNo)*i,0)

                              graphMc.graphics.lineTo(50+(450/weekNo)*i,300)

                    }

                    for (i=baseSkill;i<=topSkill;i++){

                              graphMc.graphics.moveTo(50,300+baseSkill*skillH-skillH*i)

                              graphMc.graphics.lineTo(500,300+baseSkill*skillH-skillH*i)

                    }

                    // draw line

                    graphMc.graphics.lineStyle(2,0xff0000)

                    graphMc.graphics.moveTo(50,300)

                    for(i=0;i<dp.length;i++){

                              var r=dp.getItemAt(i)

                              var s=parseInt(r.Skill)

                              var w=parseInt(r.Week)

                              graphMc.graphics.lineTo(50+w*weekW,300+baseSkill*skillH-s*skillH)

                    }

                    for(i=0;i<levelArray.length;i++){

                              var sl=graphMc.getChildByName("sl"+i)

                              sl.y=300-skillH*(i-baseSkill+1)

                              if(sl.y<0 || sl.y>300){

                                        sl.visible=false

                              }else{

                                        sl.visible=true

                              }

                              var gp=graphMc.getChildByName("gp"+i)

                              if(i<baseSkill || i>=topSkill){

                                        gp.visible=false

                              }else{

                                        r=dp.getItemAt(i-baseSkill)

                                        s=parseInt(r.Skill)

                                        w=parseInt(r.Week)

                                        gp.visible=true

                                        gp.txt.text=r.Age

                                        gp.txtW.text=r.Week+" w"

                                        gp.y=300-skillH*(i-baseSkill+1)

                                        gp.x=50+w*weekW

                              }

                    }

          }

}

/* Click to Go to Scene and Play

*/

Home.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene);

function fl_ClickToGoToScene(event:MouseEvent):void

{

removeChild(graphMc);

//remove graphMc listeners, if there are any

graphMc=null;

          MovieClip(this.root).gotoAndPlay(1, "Scene 1");

}

stop();

[/code]

This topic has been closed for replies.
Correct answer moccamaximum

Its to much to make them from scratch so i tried to work around that with 2 sliders linked as min and max. It works so far except for this:

The minimum skill slider will change the data grid upwards. But the maximum skill slider will not draw back the data grid downwards.

I hope this can be solved.

import fl.controls.ComboBox

import fl.controls.Slider

import fl.controls.DataGrid

import fl.controls.dataGridClasses.DataGridColumn

import fl.data.DataProvider

///////////////////////////

var levelArray:Array=new Array("disastrous","wretched","poor","weak","inadequate","passable","solid","excellent","formidable","outstanding","brilliant","magnificent","worldclass","supernatural","titanic","extra-terrestrial","mythical","magical","utopian","divine")

var trainingArray:Array=new Array("Goalkeeping","Defending","Defensive Positions","Crossing","WingAttack","Playmaking","Scoring","Shooting","Short Passes","Through Passes","Set Pieces")

var trainingBase:Array=new Array(3.0206,5.4824,10.9648,3.2341,5.3902,4.6613,4.8536,8.0893,4.2989,5.0575,0.9938)

// years slide

yearsSb.addEventListener(Event.CHANGE,onYearsChange)

// days slide

daysSb.addEventListener(Event.CHANGE,onDaysChange)

// Current skill slide

skillminSb.addEventListener(Event.CHANGE,onMinSkilChange)

// To skill slide

skillmaxSb.addEventListener(Event.CHANGE,onMaxSkilChange)

// sublevel slide

subSb.addEventListener(Event.CHANGE,onSubChange);

// coach slide

coachSb.addEventListener(Event.CHANGE,onCoachChange)

// assistans slide

assSb.addEventListener(Event.CHANGE,onAssChange)

// intensity slide

intensitySb.addEventListener(Event.CHANGE,onIntensityChange)

// stamina slide

staminaSb.addEventListener(Event.CHANGE,onStaminaChange)

for (var i=0;i<trainingArray.length;i++){

          trainingCb.addItem({label:trainingArray, data:trainingBase})

}

trainingCb.addEventListener(Event.CHANGE,changeEvent)

trainingCb.selectedIndex=0

// datagrid

//dg.columns = ["Week", "Skill", "Length", "Age" ];

var weekCol:DataGridColumn=new DataGridColumn()

weekCol.dataField="Week"

weekCol.sortOptions = Array.NUMERIC;

weekCol.width=50

dg.addColumn(weekCol)

var skillCol:DataGridColumn=new DataGridColumn()

skillCol.dataField="Skill"

skillCol.width=150

skillCol.sortOptions = Array.NUMERIC;

dg.addColumn(skillCol)

var lengthCol:DataGridColumn=new DataGridColumn()

lengthCol.dataField="Length"

lengthCol.width=75

dg.addColumn(lengthCol)

var ageCol:DataGridColumn=new DataGridColumn()

ageCol.dataField="Age"

ageCol.width=75

dg.addColumn(ageCol)

// variables

var years:Number

var days:Number

var yearsFactor:Number

var level:Number

var subLevel:Number

var levelFactor:Number

var trainingFactor:Number

var coachFactor:Number

var assistentsFactor:Number

var intensity:Number

var stamina:Number

var weeks:Number

var skillUp:Number

var baseLevel:Number

var newLevel:Number

// initialise graph mc

var graphMc:MovieClip=new MovieClip()

graphMc.x=80

graphMc.y=680

for(i=0;i<levelArray.length;i++){

          var skilLab:skillLabel=new skillLabel()

          skilLab.txt.text=levelArray

          skilLab.name="sl"+i

          skilLab.x=30

          var graphPoint:point=new point()

          graphPoint.name="gp"+i

          graphMc.addChild(skilLab)

          graphMc.addChild(graphPoint)

}

addChild(graphMc)

// events

function onYearsChange(e){

          yearsVal.text=yearsSb.value.toString()

          calc()

}

function onDaysChange(e){

          daysVal.text=daysSb.value.toString()

          calc()

 

}

function onMinSkilChange(e){

          skillValMin.text=levelArray[skillminSb.value-1]

  

    if (skillminSb.value > skillmaxSb.value) skillminSb.value = skillmaxSb.value;

    calc()

}

function onMaxSkilChange(e){

          skillValMax.text=levelArray[skillmaxSb.value-1]

 

          if (skillmaxSb.value < skillminSb.value) skillmaxSb.value = skillminSb.value;

          calc()

}

function onSubChange(e){

          subVal.text=((subSb.value)/10).toString()

          calc()

}

function onCoachChange(e){

          coachVal.text=levelArray[coachSb.value-1]

          calc()

}

function onAssChange(e){

          assVal.text=assSb.value.toString()

          calc()

}

function onIntensityChange(e){

          intensityVal.text=intensitySb.value.toString()

          calc()

}

function onStaminaChange(e){

          staminaVal.text=staminaSb.value.toString()

          calc()

}

function changeEvent(e){

          calc()

}

calc()

function calc(){

 

          years=yearsSb.value

          days=daysSb.value

          level=skillminSb.value

          subLevel=subSb.value/10

 

          yearsFactor=Math.pow(1.0404,years+days/112-17)

          levelFactor=-1.4595*Math.pow((level+subLevel)/20,2)+3.7535*(level+subLevel)/20-0.1349

 

          trainingFactor=trainingBase[trainingCb.selectedIndex]

          coachFactor=1+(7-Math.min(coachSb.value,7.5))*0.091

          assistentsFactor=1+(1.041392685-(Math.log(assSb.value+1))*Math.LOG10E)*0.2749

          intensity=1/(intensitySb.value/100)

          stamina=1/(1-staminaSb.value/100)

          weeks=yearsFactor*levelFactor*trainingFactor*coachFactor*assistentsFactor*intensity*stamina

          weeks=Math.max(weeks,1)

          skillUp=1/weeks

          baseLevel=level+subLevel

          newLevel=baseLevel

          var dosta:Boolean=false

          var weeksNo:Number=0

          var weeksCount:Number=0

          var dp:DataProvider=new DataProvider()

          while(!dosta){

                    weeksNo++

                    weeksCount++

                    days+=7

                    if(days>111){

                              years++

                              days=days-112

                    }

                    reCalc()

                    newLevel+=skillUp

                    if((newLevel-level)>=1){

                              dp.addItem({ Week: weeksNo, Skill: (Math.floor(newLevel))+"-"+levelArray[Math.floor(newLevel)-1], Length:weeksCount+" weeks", Age:years+"y "+days+"d" })

                              level++

                              weeksCount=0

                    }

                    if(newLevel>=20 || years>=31){

                              dosta=true

                    }

 

          }

          dg.dataProvider=dp

          drawGraph(dp)

}

function reCalc(){

          yearsFactor=Math.pow(1.0404,years+days/112-17)

          levelFactor=-1.4595*Math.pow(newLevel/20,2)+3.7535*newLevel/20-0.1349

          weeks=yearsFactor*levelFactor*trainingFactor*coachFactor*assistentsFactor*intensity*stamina

          weeks=Math.max(weeks,1)

          skillUp=1/weeks

}

function drawGraph(dp){

          if(dp.length>0){

                    var lastRow=dp.getItemAt(dp.length-1)

                    var weekNo:Number=parseInt(lastRow.Week)

                    var topSkill:Number=parseInt(lastRow.Skill)

                    var firstRow=dp.getItemAt(0)

                    var baseSkill:Number=parseInt(firstRow.Skill)-1

                    var skillH=300/(topSkill-baseSkill)

                    var weekW=450/weekNo

                    graphMc.graphics.clear()

                    // draw greed

                    graphMc.graphics.lineStyle(2,0xffffff)

                    graphMc.graphics.moveTo(50,0)

                    graphMc.graphics.lineTo(50,300)

                    graphMc.graphics.lineTo(500,300)

                    graphMc.graphics.lineStyle(1,0xcccccc)

                    for (i=0;i<weekNo+1;i++){

                              graphMc.graphics.moveTo(50+(450/weekNo)*i,0)

                              graphMc.graphics.lineTo(50+(450/weekNo)*i,300)

                    }

                    for (i=baseSkill;i<=topSkill;i++){

                              graphMc.graphics.moveTo(50,300+baseSkill*skillH-skillH*i)

                              graphMc.graphics.lineTo(500,300+baseSkill*skillH-skillH*i)

                    }

                    // draw line

                    graphMc.graphics.lineStyle(2,0xff0000)

                    graphMc.graphics.moveTo(50,300)

                    for(i=0;i<dp.length;i++){

                              var r=dp.getItemAt(i)

                              var s=parseInt(r.Skill)

                              var w=parseInt(r.Week)

                              graphMc.graphics.lineTo(50+w*weekW,300+baseSkill*skillH-s*skillH)

                    }

                    for(i=0;i<levelArray.length;i++){

                              var sl=graphMc.getChildByName("sl"+i)

                              sl.y=300-skillH*(i-baseSkill+1)

                              if(sl.y<0 || sl.y>300){

                                        sl.visible=false

                              }else{

                                        sl.visible=true

                              }

                              var gp=graphMc.getChildByName("gp"+i)

                              if(i<baseSkill || i>=topSkill){

                                        gp.visible=false

                              }else{

                                        r=dp.getItemAt(i-baseSkill)

                                        s=parseInt(r.Skill)

                                        w=parseInt(r.Week)

                                        gp.visible=true

                                        gp.txt.text=r.Age

                                        gp.txtW.text=r.Week+" w"

                                        gp.y=300-skillH*(i-baseSkill+1)

                                        gp.x=50+w*weekW

                              }

                    }

          }

}

/* Click to Go to Scene and Play

*/

Home.addEventListener(MouseEvent.CLICK, fl_ClickToGoToScene);

function fl_ClickToGoToScene(event:MouseEvent):void

{

removeChild(graphMc);

//remove graphMc listeners, if there are any

graphMc=null;

          MovieClip(this.root).gotoAndPlay(1, "Scene 1");

}

stop();


You are doing nothing with your skillmaxSb.value in calc()

PS:you should either use a code hihlighter to put this much on this forum, or concentrate on the essential.

1 reply

Inspiring
May 27, 2013

are you making these sliders from scratch or are you trying to use the slider-component?

May 27, 2013

I am trying to use the slider component. 

Inspiring
May 27, 2013

This could help.