public addListener(listenerObj:Object) : Boolean
注册一个对象,以便接收事件通知消息。针对广播对象调用此方法,侦听器对象会作为一个参数被发送。
可用性:ActionScript 1.0;Flash Player 6
参数listenerObj:Object - 接收事件通知的侦听器对象的名称。
返回Boolean - 虽然从技术角度看此方法返回的是布尔值,但实际它返回的是 Void,因为它总是会返回值 true。
下面的示例摘自 AsBroadcaster.initialize() 方法的条目中提供的完整示例。
someObject.addListener(myListener1); // Register myListener1 as listener.
someObject.addListener(myListener2); // Register myListener2 as listener.
下面的示例将侦听器添加到 FileReference 的实例中。
import flash.net.FileReference;
var listener:Object = new Object();
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
}
var fileRef:FileReference = new FileReference();
fileRef.addListener(listener);
var url:String = "http://www.macromedia.com/platform/whitepapers/platform_overview.pdf";
fileRef.download(url, "FlashPlatform.pdf");
下面的示例对 addListener() 方法进行了演示。
import flash.net.FileReferenceList;
var listener:Object = new Object();
listener.onCancel = function(fileRefList:FileReferenceList) {
trace("onCancel");
}
listener.onSelect = function(fileRefList:FileReferenceList) {
trace("onSelect: " + fileRefList.fileList.length);
}
var fileRef:FileReferenceList = new FileReferenceList();
fileRef.addListener(listener);
fileRef.browse();
下面的示例演示如何向在用户通过单击文本字段设置合成字符串时输出通知的 System.IME 添加侦听器对象。
var IMEListener:Object = new Object();
IMEListener.onIMEComposition = function(str:String) {
trace(">> onIMEComposition: " + str);
}
System.IME.addListener(IMEListener);
trace(System.IME.length);
var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
mc.createTextField("txt", this.getNextHighestDepth(), 0, 0, 0, 0);
mc.txt.border = true;
mc.txt.background = true;
mc.txt.autoSize = "left";
mc.txt.text = "Click this text to add a listener.";
mc.onPress = function() {
if(System.capabilities.hasIME) {
Selection.setFocus(mc.txt);
System.IME.setCompositionString(mc.txt.text);
}
}
下面的示例创建新的侦听器对象,并为 onKeyDown 和 onKeyUp 定义函数。最后一行使用 addListener() 向 Key 对象注册该侦听器,以使该对象可接收 key down 和 key up 事件的通知。
var myListener:Object = new Object();
myListener.onKeyDown = function () {
trace ("You pressed a key.");
}
myListener.onKeyUp = function () {
trace ("You released a key.");
}
Key.addListener(myListener);
下面的示例将快捷键 Ctrl+7 分配给实例名为 my_btn 的按钮,并向屏幕阅读器(请参见 _accProps)提供有关该快捷键的信息。在此示例中,当您按 Ctrl+7 时,myOnPress 函数就在"输出"面板上显示 hello 文本。
function myOnPress() {
trace("hello");
}
function myOnKeyDown() {
// 55 is key code for 7
if (Key.isDown(Key.CONTROL) && Key.getCode() == 55) {
Selection.setFocus(my_btn);
my_btn.onPress();
}
}
var myListener:Object = new Object();
myListener.onKeyDown = myOnKeyDown;
Key.addListener(myListener);
my_btn.onPress = myOnPress;
my_btn._accProps.shortcut = "Ctrl+7";
Accessibility.updateProperties();
在下面的示例中,在运行时创建两个输入文本字段,将每个文本字段的边框设置为 true。此代码创建名为 focusListener 的新的(通用)ActionScript 对象。此对象为其本身定义 onSetFocus 属性,并为该属性分配一个函数。该函数采用两个参数:对失去焦点的文本字段的引用和对获得焦点的文本字段的引用。该函数将失去焦点的文本字段的 border 属性设置为 false,并将获得焦点的文本字段的 border 属性设置为 true:
this.createTextField("one_txt", 99, 10, 10, 200, 20);
this.createTextField("two_txt", 100, 10, 50, 200, 20);
one_txt.border = true;
one_txt.type = "input";
two_txt.border = true;
two_txt.type = "input";
var focusListener:Object = new Object();
focusListener.onSetFocus = function(oldFocus_txt, newFocus_txt) {
oldFocus_txt.border = false;
newFocus_txt.border = true;
};
Selection.addListener(focusListener);