Copy link to clipboard
Copied
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]
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.
Copy link to clipboard
Copied
are you making these sliders from scratch or are you trying to use the slider-component?
Copy link to clipboard
Copied
I am trying to use the slider component.
Copy link to clipboard
Copied
This could help.
Copy link to clipboard
Copied
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();
Copy link to clipboard
Copied
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.
Copy link to clipboard
Copied
Thanks for the pointers. I just solved it with this:
var skillDown:Number
skillDown=skillmaxSb.value
newLevel+=skillUp
if((newLevel-skillDown)>=1){
dp.removeItem({ Week: weeksNo, Skill: (Math.floor(newLevel))+"-"+levelArray[Math.floor(newLevel)-1], Length:weeksCount+" weeks", Age:years+"y "+days+"d" })
level++
weeksCount=0
}
Thanks!
Copy link to clipboard
Copied
You`re welcome
Find more inspiration, events, and resources on the new Adobe Community
Explore Now