PDA

View Full Version : Return TextField from extended TextField class



Qnaster
September 23rd, 2008, 04:54 AM
Hi

I'm trying to return a TextField from a class and then display it on stage... but I'm having problem to get it to show up on stage?

Help appreciated!

TFCreator.as:




import flash.display.*;
import flash.text.*;

public class TFCreator extends TextField
{

// TextField
private var tf:TextField;

// Properties
private var txt:String;
private var instancename:String;
private var color:Number;
private var autosize:String;
private var multilinee:Boolean;
private var wordwrap:Boolean;

// Default TextFormat
private var dfrmt:TextFormat;
private var dfrmt_font:String;
private var dfrmt_color:Number;
private var dfrmt_size:Number;

// External TextFormat
private var efrmt:TextFormat;

public function TFCreator(txt:String = "Text", instancename:String = "Instance", color:Number = 0x333333, autosize:String = "LEFT", multilinee:Boolean = false, wordwrap:Boolean = false, dfrmt_font:String = "Arial", dfrmt_size:Number = 11, dfrmt_color:Number = 0x333333):void
{

// Init Properties
this.txt = txt;
this.instancename = instancename;
this.color = color;
this.autosize = autosize;
this.multilinee = multilinee;
this.wordwrap = wordwrap;

// Init Default Textformat
this.dfrmt_font = dfrmt_font;
this.dfrmt_size = dfrmt_size;
this.dfrmt_color = dfrmt_color;

// Create TextField
createTextfield();

}

private function createTextfield():TextField
{

// New TextField
this.tf = new TextField();

// Set Default TextFormat
setDefaultTextformat();

// Set Properties
this.tf.text = this.txt;
this.tf.name = this.instancename;
this.tf.textColor = this.color;
setAutosize(this.autosize);
setMultiline(this.multilinee);
setWordwrap(this.wordwrap);

trace("Textfield created");

// Add TextField to Displaylist
//addChild(this.tf);
return this.tf;

}

// Getters & Setters......

}
}



and test on timeline:




import TFCreator;

var ttxt:String = "Halloooo?";

var t1:TFCreator = new TFCreator(ttxt,"inst1",0x666666,"LEFT",false,false,"Arial",13,0x333333);
addChild(t1);
t1.x = 200;
t1.y = 300;
//t1.selectable = false;
t1.setText("Baaaaa");
trace(t1.getText());
//t1.setAutosize("CENTER");
trace(t1.getAutosize());
trace(t1);
getChildByName("inst1");



It seems to work ok it just wont show up on stage.

hobbbz
September 23rd, 2008, 04:40 PM
In your TFCreator class you have commented out the code that would add the textField child of the TFCreator class to its display list.
Also your creatTextField method returns the created tf but you're doing nothing with it.

Thirdly there is no reason to extend TextField if you're creating a child textField object within your custom class.
You may as well extend object or movieclip.

What you probably want to do is keep extending TextField but change your constructor to not need an instance name.

ie var myTF:TFCreator = new TFCreator(ttxt, 0x666666,"LEFT",false,false,"Arial",13,0x333333);
addChild(myTF);

then instead of creating a textfield within your custom class, just apply all the properties you take in your constructor to "this" which is an instance of textField