使用 ActionScript 3.0 组件 |
|
|
|
| 关于 ActionScript 3.0 组件 > 一个简单的应用程序 > 创建 Greetings 应用程序 | |||
下列步骤使用 Flash 创作工具创建 FLA 文件、将组件放置在"舞台"上、向"时间轴"添加 ActionScript 代码,从而创建 Greetings 应用程序。
在 FLA 文件中创建 Greetings 应用程序:打开一个新的 Flash 窗口。
作为实例名,然后输入下列信息:
import flash.events.Event;
import fl.events.ComponentEvent;
import fl.events.ColorPickerEvent;
import fl.controls.RadioButtonGroup;
var rbGrp:RadioButtonGroup = RadioButtonGroup.getGroup("fontRbGrp");
rbGrp.addEventListener(MouseEvent.CLICK, rbHandler);
txtCp.addEventListener(ColorPickerEvent.CHANGE,cpHandler);
msgCb.addEventListener(Event.CHANGE, cbHandler);
前三行导入应用程序使用的事件类。用户与组件之一进行交互时,会发生事件。接下来的五行为应用程序希望侦听的事件注册事件处理函数。用户单击 RadioButton 时发生 click 事件。用户在 ColorPicker 中选择其它颜色时发生 change 事件。用户从 ComboBox 的下拉列表选择其它问候时发生 change 事件。
第四行导入 RadioButtonGroup 类以便应用程序可以为一组 RadioButton 分配事件侦听器,而不是分别为每个按钮分配侦听器。
tf TextFormat 对象,应用程序使用此对象更改 TextArea 中文本的 size 和 color 样式属性。
var tf:TextFormat = new TextFormat();
rbHandler 事件处理函数。在用户单击其中一个 RadioButton 组件时,此函数处理 click 事件。
function rbHandler(event:MouseEvent):void {
switch(event.target.selection.name) {
case "smallRb":
tf.size = 14;
break;
case "largerRb":
tf.size = 18;
break;
case "largestRb":
tf.size = 24;
break;
}
aTa.setStyle("textFormat", tf);
}
此函数使用 switch 语句检查 event 对象的 target 属性,以确定哪个 RadioButton 触发了事件。currentTarget 属性包含触发事件的对象名称。根据用户单击的是哪个 RadioButton,应用程序将 TextArea 中文本的大小更改为 14、18 或 24 磅。
cpHandler() 函数,此函数处理 ColorPicker 中的值的更改:
function cpHandler(event:ColorPickerEvent):void {
tf.color = event.target.selectedColor;
aTa.setStyle("textFormat", tf);
}
此函数将 tf TextFormat 对象的 color 属性设置为 ColorPicker 中选定的颜色,然后调用 setStyle() 将此颜色应用到 aTa TextArea 实例中的文本。
cbHandler() 函数,此函数处理 ComboBox 中选择的更改:
function cbHandler(event:Event):void {
aTa.text = event.target.selectedItem.label;
}
此函数只是将 TextArea 中的文本替换为 ComboBox 中选择的文本 (event.target.selectedItem.label)。
下面的部分向您演示如何使用外部的 ActionScript 类,以及其"库"中只有必需组件的 FLA 文件构建相同的应用程序。
使用外部类文件创建 Greetings2 应用程序:打开一个新的 Flash 窗口。
因为编译的 SWF 文件会使用所有资源,所以您需要将资源都添加到"库"中。将组件拖到"库"面板的底部。在您将这些组件添加到"库"中时,会自动添加其它资源(List、TextInput 和 UIScrollBox)。
如果 Flash 显示一个"无法找到该文档类的定义"的警告,请忽略。您将按下面步骤定义 Greetings2 类。此类定义应用程序的主要功能。
打开一个新的脚本窗口。
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextFormat;
import fl.events.ComponentEvent;
import fl.events.ColorPickerEvent;
import fl.controls.ColorPicker;
import fl.controls.ComboBox;
import fl.controls.RadioButtonGroup;
import fl.controls.RadioButton;
import fl.controls.TextArea;
public class Greetings2 extends Sprite {
private var aTa:TextArea;
private var msgCb:ComboBox;
private var smallRb:RadioButton;
private var largerRb:RadioButton;
private var largestRb:RadioButton;
private var rbGrp:RadioButtonGroup;
private var txtCp:ColorPicker;
private var tf:TextFormat = new TextFormat();
public function Greetings2() {
脚本定义一个名为 Greetings2 的 ActionScript 3.0 类。脚本进行以下操作:
tf TextFormat 对象。Greetings2()。我们将这些行添加到此函数中,并按下列步骤向类添加其它方法。Greeting2() 函数添加下列代码行:
createUI();
setUpHandlers();
}
此函数现在应该如下所示:
public function Greetings2() {
createUI();
setUpHandlers();
}
Greeting2() 方法的右括号后添加下列代码行:
private function createUI() {
bldTxtArea();
bldColorPicker();
bldComboBox();
bldRadioButtons();
}
private function bldTxtArea() {
aTa = new TextArea();
aTa.setSize(230, 44);
aTa.text = "Hello World!";
aTa.move(165, 57);
addChild(aTa);
}
private function bldColorPicker() {
txtCp = new ColorPicker();
txtCp.move(96, 72);
addChild(txtCp);
}
private function bldComboBox() {
msgCb = new ComboBox();
msgCb.width = 130;
msgCb.move(265, 120);
msgCb.prompt = "Greetings";
msgCb.addItem({data:"Hello.", label:"English"});
msgCb.addItem({data:"Bonjour.", label:"Français"});
msgCb.addItem({data:"¡Hola!", label:"Español"});
addChild(msgCb);
}
private function bldRadioButtons() {
rbGrp = new RadioButtonGroup("fontRbGrp");
smallRb = new RadioButton();
smallRb.setSize(100, 22);
smallRb.move(155, 120);
smallRb.group = rbGrp; //"fontRbGrp";
smallRb.label = "Small";
smallRb.name = "smallRb";
addChild(smallRb);
largerRb = new RadioButton();
largerRb.setSize(100, 22);
largerRb.move(155, 148);
largerRb.group = rbGrp;
largerRb.label = "Larger";
largerRb.name = "largerRb";
addChild(largerRb);
largestRb = new RadioButton();
largestRb.setSize(100, 22);
largestRb.move(155, 175);
largestRb.group = rbGrp;
largestRb.label = "Largest";
largestRb.name = "largestRb";
addChild(largestRb);
}
这些行执行下列操作:
addChild() 方法将各个组件添加到舞台上。bldRadioButtons() 方法的右括号后,添加 setUpHandlers() 方法的下列代码:
private function setUpHandlers():void {
rbGrp.addEventListener(MouseEvent.CLICK, rbHandler);
txtCp.addEventListener(ColorPickerEvent.CHANGE,cpHandler);
msgCb.addEventListener(Event.CHANGE, cbHandler);
}
private function rbHandler(event:MouseEvent):void {
switch(event.target.selection.name) {
case "smallRb":
tf.size = 14;
break;
case "largerRb":
tf.size = 18;
break;
case "largestRb":
tf.size = 24;
break;
}
aTa.setStyle("textFormat", tf);
}
private function cpHandler(event:ColorPickerEvent):void {
tf.color = event.target.selectedColor;
aTa.setStyle("textFormat", tf);
}
private function cbHandler(event:Event):void {
aTa.text = event.target.selectedItem.data;
}
}
}
这些函数定义组件的事件侦听器。
|
|
|
|