as3 - 如何更改字体、大小和颜色?
as3 - How to change font, size, and color?
只是一个警告,我不是很精通编程。如果我正在阅读代码,我或多或少可以理解一条线的作用,但每当我需要从头开始做一些东西时,我都会很挣扎。
我找到了一个 Flash 测验模板,它通过脚本处理所有事情。在对测验进行调整时,我添加了一个背景图像,使文本难以阅读。我想更改文本颜色、大小和使用的字体,但现有代码中没有任何可调整设置的内容,我卡住了。
.fla 使用了两个脚本:一个处理测验的导航和评分,而另一个似乎专门用于格式化问题和答案的显示方式。看起来任何字体调整都会在第二个中进行,所以这里是完整的脚本:
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.events.Event;
import fl.controls.RadioButton;
import fl.controls.RadioButtonGroup;
public class QuizQuestion extends Sprite {
private var question:String;
private var questionField:TextField;
private var choices:Array;
private var theCorrectAnswer:int;
private var theUserAnswer:int;
//variables for positioning:
private var questionX:int = 25;
private var questionY:int = 25;
private var answerX:int = 60;
private var answerY:int = 55;
private var spacing:int = 25;
public function QuizQuestion(theQuestion:String, theAnswer:int, ...answers) {
//store the supplied arguments in the private variables:
question = theQuestion;
theCorrectAnswer = theAnswer;
choices = answers;
//create and position the textfield (question):
questionField = new TextField();
questionField.text = question;
questionField.autoSize = TextFieldAutoSize.LEFT;
questionField.x = questionX;
questionField.y = questionY;
addChild(questionField);
//create and position the radio buttons (answers):
var myGroup:RadioButtonGroup = new RadioButtonGroup("group1");
myGroup.addEventListener(Event.CHANGE, changeHandler);
for(var i:int = 0; i < choices.length; i++) {
var rb:RadioButton = new RadioButton();
rb.textField.autoSize = TextFieldAutoSize.LEFT;
rb.label = choices[i];
rb.group = myGroup;
rb.value = i + 1;
rb.x = answerX;
rb.y = answerY + (i * spacing);
addChild(rb);
}
}
private function changeHandler(event:Event) {
theUserAnswer = event.target.selectedData;
}
public function get correctAnswer():int {
return theCorrectAnswer;
}
public function get userAnswer():int {
return theUserAnswer;
}
}
}
我查看了此处的几个问题并尝试根据我的脚本调整解决方案,但似乎没有任何改变文本。我得到的最好结果是 运行 测验没有错误,但似乎也没有对文本进行任何调整。有人可以引导我完成它吗?
您需要使用TextFormat。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextFormat.html
只需将其应用于 TextField 实例即可。
要添加到@dimpiax 的答案,您可以像这样设置 RadioButton 标签的样式:
rb.setStyle("textFormat", answerFormat);
只是一个警告,我不是很精通编程。如果我正在阅读代码,我或多或少可以理解一条线的作用,但每当我需要从头开始做一些东西时,我都会很挣扎。
我找到了一个 Flash 测验模板,它通过脚本处理所有事情。在对测验进行调整时,我添加了一个背景图像,使文本难以阅读。我想更改文本颜色、大小和使用的字体,但现有代码中没有任何可调整设置的内容,我卡住了。
.fla 使用了两个脚本:一个处理测验的导航和评分,而另一个似乎专门用于格式化问题和答案的显示方式。看起来任何字体调整都会在第二个中进行,所以这里是完整的脚本:
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.events.Event;
import fl.controls.RadioButton;
import fl.controls.RadioButtonGroup;
public class QuizQuestion extends Sprite {
private var question:String;
private var questionField:TextField;
private var choices:Array;
private var theCorrectAnswer:int;
private var theUserAnswer:int;
//variables for positioning:
private var questionX:int = 25;
private var questionY:int = 25;
private var answerX:int = 60;
private var answerY:int = 55;
private var spacing:int = 25;
public function QuizQuestion(theQuestion:String, theAnswer:int, ...answers) {
//store the supplied arguments in the private variables:
question = theQuestion;
theCorrectAnswer = theAnswer;
choices = answers;
//create and position the textfield (question):
questionField = new TextField();
questionField.text = question;
questionField.autoSize = TextFieldAutoSize.LEFT;
questionField.x = questionX;
questionField.y = questionY;
addChild(questionField);
//create and position the radio buttons (answers):
var myGroup:RadioButtonGroup = new RadioButtonGroup("group1");
myGroup.addEventListener(Event.CHANGE, changeHandler);
for(var i:int = 0; i < choices.length; i++) {
var rb:RadioButton = new RadioButton();
rb.textField.autoSize = TextFieldAutoSize.LEFT;
rb.label = choices[i];
rb.group = myGroup;
rb.value = i + 1;
rb.x = answerX;
rb.y = answerY + (i * spacing);
addChild(rb);
}
}
private function changeHandler(event:Event) {
theUserAnswer = event.target.selectedData;
}
public function get correctAnswer():int {
return theCorrectAnswer;
}
public function get userAnswer():int {
return theUserAnswer;
}
}
}
我查看了此处的几个问题并尝试根据我的脚本调整解决方案,但似乎没有任何改变文本。我得到的最好结果是 运行 测验没有错误,但似乎也没有对文本进行任何调整。有人可以引导我完成它吗?
您需要使用TextFormat。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/text/TextFormat.html
只需将其应用于 TextField 实例即可。
要添加到@dimpiax 的答案,您可以像这样设置 RadioButton 标签的样式:
rb.setStyle("textFormat", answerFormat);