[FLASH9]variable names as arguments?

Hi. Is it possible to pass variable as arguments for a function?

I wish to update a boolean variable via a function, by passing the name of the variable to the function, like so:




function ENVSegment(curSegment:Boolean, nextSegment:Boolean)
{
curSegment = false;
nextSegment = true;
}

var attackSegmentIsRunning:Boolean = false;
var releaseSegmentIsRunning:Boolean = false;

ENVSegment(attackSegmentIsRunning, releaseSegmentIsRunning);

the purpose of this is to turn code like this:


function newENV2()
{
    var time:Number = 0;
    var startPos:Number = 0; 
    var endPos:Number = 0;
    var segmentPos:Number = 0;
    var segmentStep:Number = 0;
    
    if (ENV2IsRunning == true)
    {    //1. attack1Segment
        if (attack1SegmentIsRunning == true)
        {
            //ENVSegment(attack1TimeCB.value, 0, attack1ValCB.value, attack1SegmentIsRunning, attack2SegmentIsRunning, "attack1");
            
            curSegmentText.text = "attack1";
            time = attack1TimeCB.value;
            startPos = 0;
            endPos = attack1ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos >= ( 1 - segmentStep))
            {
                attack1SegmentIsRunning = false;
                attack2SegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }
        //2. attack2Segment
        if (attack2SegmentIsRunning == true)
        {
            curSegmentText.text = "attack2";
            time = attack2TimeCB.value;
            startPos = attack1ValCB.value;
            endPos = attack2ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos >= ( 1 - segmentStep))
            {
                attack2SegmentIsRunning = false;
                attack3SegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }//3. attack3 segment
        if (attack3SegmentIsRunning == true)
        {
            curSegmentText.text = "attack3";
            time = attack3TimeCB.value;
            startPos = attack2ValCB.value;
            endPos = attack3ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos > ( 1 - segmentStep))
            {
                attack3SegmentIsRunning = false;
                decay1SegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }//4. decay1 segment
        if (decay1SegmentIsRunning == true)
        {
            curSegmentText.text = "decay1";
            time = decay1TimeCB.value;
            startPos = attack3ValCB.value;
            endPos = decay1ValCB.value;
            segmentPos = newCalc(time, startPos, endPos);
            segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
                if (time == 0) { segmentStep = 0; }
            if (segmentPos > ( 1 - segmentStep))
            {
                decay1SegmentIsRunning = false;
                sustainSegmentIsRunning = true;
                currentSegmentHeight = endPos / 100;
                ENV2Value = -endPos/100;
                segmentCounter = 0;
            }
        }//5. sustain segment
        if (sustainSegmentIsRunning == true)
        {
            curSegmentText.text = "sustain";
            ENV2Value = -decay1ValCB.value/100;
        }
    }
}

into code like this:


function ENVSegment(time:Number, startPos:Number, endPos:Number, currentSegment:Object, nextSegment:Objectl, segmentText:String)
{
    curSegmentText.text = segmentText;
    var segmentPos:Number = newCalc(time, startPos, endPos);
    segmentStep = 1 / ( (time * 1000) / pixelsPerSecond);
    if (time == 0) 
    { segmentStep = 0; }
    if (segmentPos >= ( 1 - segmentStep))
    {
        currentSegment = false;
        nextSegment = true;
        currentSegmentHeight = endPos / 100;
        ENV2Value = -endPos/100;
        segmentCounter = 0;
    }
}

function newENV2()
{
    var time:Number = 0;
    var startPos:Number = 0; 
    var endPos:Number = 0;
    var segmentPos:Number = 0;
    var segmentStep:Number = 0;
    
    if (ENV2IsRunning == true)
    {    //1. attack1Segment
        if (attack1SegmentIsRunning == true)
        {
            ENVSegment(attack1TimeCB.value, 0, attack1ValCB.value, attack1SegmentIsRunning, attack2SegmentIsRunning, "attack1");
           }
if (attack2SegmentIsRunning == true)
{
ENVSegment(attack2TimeCB.value, attack1ValCB.value, attack2ValCB.value, attack2SegmentIsRunning, attack3SegmentIsRunning, "attack2");
}

etc...   for a bunch of segments
}
}

much shorter, and easier to understand. also, less repetition of the same blocks of code over and over… thanks for the help. your New Thread textInput does not like fireFox3. can’t ecopy or select any of the text I type before posting, and the blinking position cursor never shows up, like with textEdit or other forums.

thanks

chuck