我的 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);
}