company logo
advertisement for deep fried Twinkies


我的 ActionScript 3.0 game programming university 学习笔记(4)


Drawing Text
如何在场景中建立Text
var myText:TextField = new TextField();
myText.text = “Check it out!”;
addChild(myText);

控制下text的位置
myText.x = 50;
myText.y = 50;

控制下text的宽度还有高度
myText.width = 200;
myText.height = 30;

这个时候你视觉上看不到TextField的高度和宽度的,所以我们采用设定border可见的方法,这样就可以看到TextField的边缘
myText.border = true;

但这个时候你发现这段输出的文件是可以用鼠标选择的,那么如何让它不可选呢,我们也有相应的属性处理
myText.selectable = false;

在进一步,我们想对文本的样式进行处理,包括字大小,颜色之类的
我们不能直接去控制myText, 但是我们可以通过定义TextFormat来实现
var myFormat:TextFormat = new TextFormat();
myFormat.font = “Arial”;
myFormat.size = 24;
myFormat.bold = true;
上边这些行代码我们可以简单的写在一句上
var myFormat:TextFormat = new TextFormat(“Arial”, 24, 0x000000, true);
书中说 TextFormat 有13个参数,但是如果我们不设定的话,我们就可以skip, 呵呵!

现在 我们有用了TextFormat object , 我们有两种方法使用它,一种是在  TextField 上使用 setTextFormat
另一种方法是使用defaultTextFormat
myText.defaultTextFormat = myFormat;

两种方法的区别是? help~ help~ 知道了我在更新这块

Creating Linked Text
如何建立文本连接呢?我们可以使用属性htmlText去写HTML, 而不是通过属性text是输入纯粹的文本,所以我们可以这样写的

var myWebLink:TextField = new TextField();
myWebLink.htmlText = "Visit <A HREF='http://www.greenidea.net'>greenidea.net</A>!";
addChild(myWebLink);

代码很简单啦,连我这个初学者都能看懂,hoho!

运行上边的代码后,你会发现虽然链接有了,但是有超级链接的文本并没有什么特别,这可不是很好的用户体验啊... 所以我们会想办法让他变成别的颜色或者带上下划线
我们可以使用styleSheet属性来完成这个任务:
var myStyleSheet:StyleSheet = new StyleSheet();
myStyleSheet.setStyle("A",{textDecoration: "underline", color: "#0000FF"});
var myWebLink:TextField = new TextField();
myWebLink.styleSheet = myStyleSheet;
myWebLink.htmlText = "Visit <A HREF='http://www.greenidea.net'>greenidea.net</A>!";
addChild(myWebLink);

创建个样式styleSheet,然后把这个样式赋予myWebLink这个TextField.
myStyleSheet.setStyle("A",{textDecoration: "underline", color: "#0000FF"});
这句就好比html中的css, 是控制超级链接的样式的
然后通过 myWebLink.styleSheet = myStyleSheet; 把这个样式赋予myWebLink这个TextField.

我们可以不做超链接,也可以像button和mc那样,加上监听,like this:

var myLink:TextField = new TextField();
myLink.y = 150;
myLink.htmlText = "Click <A HREF='event:testing'>here</A>";
addChild(myLink);

addEventListener(TextEvent.LINK, textLinkClick);
function textLinkClick(event:TextEvent) {
trace(event.text);
}