Flash的文字栏位(TextField)除了用来显示与输入一般文字之外
也有支持简单的HTML标签
像是<font>, <b>, <i>, <u>, <a>, <p>, <br>, <li>, <span>, <img>
其中比较特别的是<img>,除了可以用来表现外部图片以外
还可以通过src指定Linkage Identifier的方式
呈现Library内的MovieClip
Linkage Identifier已经是AS2时代的旧名称了
转换为AS3的说法就是Class Name
意思就是可以用指定htmlText的方式
直接在TextField内产生继承DisplayObject的Sprite, MovieClip, SimpleButton
甚至是另一个TextField实体
以下便是用AS3在TextField内,再创建另一个TextField

package {
import flash.display.MovieClip;
import flash.text.TextField;
[SWF(width="300", height="200", backgroundColor="#FFFFFF")]
public class main extends MovieClip {
public function main() {
var outerTxt:TextField = new TextField();
outerTxt.border = true;
outerTxt.x = 100;
outerTxt.y = 50;
this.addChild(outerTxt);
outerTxt.htmlText = "Outer TextField<img id='txt' src='flash.text.TextField' width='80' height='50' />";
var innerTxt:TextField = outerTxt.getImageReference('txt') as TextField;
innerTxt.border = true;
innerTxt.text = "Inner TextField";
}
}
}
// Ticore's Blog - http://ticore.blogspot.com/
import flash.display.MovieClip;
import flash.text.TextField;
[SWF(width="300", height="200", backgroundColor="#FFFFFF")]
public class main extends MovieClip {
public function main() {
var outerTxt:TextField = new TextField();
outerTxt.border = true;
outerTxt.x = 100;
outerTxt.y = 50;
this.addChild(outerTxt);
outerTxt.htmlText = "Outer TextField<img id='txt' src='flash.text.TextField' width='80' height='50' />";
var innerTxt:TextField = outerTxt.getImageReference('txt') as TextField;
innerTxt.border = true;
innerTxt.text = "Inner TextField";
}
}
}
// Ticore's Blog - http://ticore.blogspot.com/
很有趣吧,一般使用情况下TextField内是无法再放其它DisplayObject的
可是TextField.htmlText却有一个问题
假如<img>标签前后没有其它文字,img会建立失败
如以下AS3程序:

package {
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFormat;
[SWF(width="300", height="200", backgroundColor="#FFFFFF")]
public class main extends MovieClip {
public function main() {
var txt:TextField = new TextField();
txt.border = true;
txt.x = 100;
txt.y = 50;
this.addChild(txt);
txt.htmlText = "<img id='img' src='flash.display.Sprite' />";
trace(txt.getImageReference('img')); // null
txt.htmlText = " " "<img id='img' src='flash.display.Sprite' />";
trace(txt.getImageReference('img')); // [object Sprite]
}
}
}
// Ticore's Blog - http://ticore.blogspot.com/
import flash.display.MovieClip;
import flash.text.TextField;
import flash.text.TextFormat;
[SWF(width="300", height="200", backgroundColor="#FFFFFF")]
public class main extends MovieClip {
public function main() {
var txt:TextField = new TextField();
txt.border = true;
txt.x = 100;
txt.y = 50;
this.addChild(txt);
txt.htmlText = "<img id='img' src='flash.display.Sprite' />";
trace(txt.getImageReference('img')); // null
txt.htmlText = " " "<img id='img' src='flash.display.Sprite' />";
trace(txt.getImageReference('img')); // [object Sprite]
}
}
}
// Ticore's Blog - http://ticore.blogspot.com/