A Flash Developer Resource Site

Results 1 to 8 of 8

Thread: simple Array() question

  1. #1
    Senior Member
    Join Date
    Nov 2000
    Posts
    136
    Code:
    createLabels(["username", "firstname", "lastname"]);
    
    function createLabels(labels){
    	for(i = 0; i < labels.length; i++){
    		trace(labels);
    	}
    }

    Why does the trace return:

    username,firstname,lastname
    username,firstname,lastname
    username,firstname,lastname

    I want it to return:

    username
    firstname
    lastname

    Can someone tell me how to fix the code to do that?

  2. #2
    Senile member! :)
    Join Date
    Dec 2001
    Location
    Saunaswamp (transl)
    Posts
    2,296
    This is because you trace the whole array out:
    Code:
    trace(labels);
    You will need to give what element to show. To do that we use [] after the arrayname:

    Code:
    createLabels(["username", "firstname", "lastname"]);
    
    function createLabels(labels)
    {
    	for(i = 0; i < labels.length; i++){
    		trace(labels[ i ]);
    	}
    }
    /Mirandir

  3. #3
    Senior Member
    Join Date
    Nov 2000
    Posts
    136

    got it.

    Thanks, I think I need some sleep ;-)

  4. #4
    Senior Member
    Join Date
    Nov 2000
    Posts
    136
    Code:
    createLabels(["username", "firstname", "lastname"],122,70,200,17,50);
    
    function createLabels(labels,startX,startY,fieldWidth,fieldHeight,verticalY){
    	var	level=3;
    	for(i=0; i<labels.length; i++){
    //		trace(labels[i]);
    		this.createTextField(label[i]+"_label",level,startX,startY + verticalY,fieldWidth,fieldHeight);
    		this.labels[i]+"_label".text = label[i];
    
    		level=level+1
    		verticalY = verticalY + verticalY;
    		}
    	}

    I can't get this to work, but I am trying to dynamically create a series of textfields with this code. If you see the problem, please let me know. I am getting an error:

    Scene=Scene 1, Layer=actions, Frame=3: Line 31: Left side of assignment operator must be variable or property.
    this.labels[i]+"_label".text = label[i];

  5. #5
    Senior Member
    Join Date
    Dec 2000
    Posts
    149
    Looks to me first off you have missed part of your FOR loop

    Can you post the fla anywhere?

  6. #6
    Developer
    Join Date
    Sep 2001
    Location
    The Bluegrass State Will Flash For Food ™
    Posts
    3,789
    Code:
    function createLabels(labels, startX, startY, fieldWidth, fieldHeight, verticalY) {
    	var level = 3;
    	for (i = 0; i < labels.length; i++) {
    		this.createTextField(label[i] + "_label", level, startX, startY + verticalY, fieldWidth, fieldHeight);
    		this[labels[i] + "_label"].text = label[i];
    		level++;
    		verticalY *= 2;
    	}
    }
    createLabels(["username", "firstname", "lastname"], 122, 70, 200, 17, 50);

  7. #7
    Junior Member
    Join Date
    Sep 2002
    Posts
    27
    I think below's what you want,

    MM


    Code:
    function createLabels(labels, startX, startY, fieldWidth, fieldHeight, verticalY) { 
    var level = 3; 
    for (i = 0; i < labels.length; i++) { 
    verticalY1 += verticalY; 
    this.createTextField(labels + "_label", level, startX, startY + verticalY1, fieldWidth, fieldHeight); 
    this[labels[ i ] + "_label"].text = labels[ i ]; 
    //this[labels[ i ] + "_label"].border = true; 
    level++; 
    } 
    } 
    createLabels(["username", "firstname", "lastname"], 122, 70, 200, 17, 50);

  8. #8
    Senile member! :)
    Join Date
    Dec 2001
    Location
    Saunaswamp (transl)
    Posts
    2,296
    Or after a brutal shortage all that remains is a for loop :

    Code:
    createLabels(["username", "firstname", "lastname"],122,70,200,17,50);
    
    function createLabels(labels,startX,startY,fieldWidth,fieldHeight,verticalY)
    {
    	for(i=0; i < labels.length; i++)
    	{
    		this.createTextField(labels[ i ]+ "_label", 3 + i, startX, startY += verticalY, fieldWidth, fieldHeight);
    		this[labels[ i ]+ "_label"].text = labels[ i ];
    	}
    }

    I've tested the code and it works. Let me know if there are any questions.

    /Mirandir

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center