обработа нажати клавиш

На саите нашел исходник чата на флеше + neko решил переделать его на флеш+php, но тут наткнулся на прблему. Немогу понять как обрабатывать нажатия клавиш в swf-version 9. В исходнике приведена вот такая запись

function onKeyDown () {
         ENTER pressed ?
        if ( flash.Key.getCode() == 13 ) {     
                var text = tf.text;
                tf.text = "";
                send (text);
        }
}

Она не работает. Не могли бы вы привести примерчик этого на flash 9 в смысле на haxe flash 9. Прочтение доков больших результатов не принесло...

addEventListener(KeyboardEvent.KEY_DOWN, ...

пример видимо был для flash. Для flash9 изменения должны быть аналогичными, как если бы мы переписывали с ActionScript2 на ActionScript3.
Можно повесить на сцену слушателя событий клавиатуры:

stage.addEventListener(flash.events.KeyboardEvent.KEY_DOWN, onKeyDown);
ну и в его обработчике проверять что за клавиша была нажата:
function onKeyDown (e : flash.events.KeyboardEvent )
{
        if ( e.keyCode == Keyboard.ENTER )
        {
                // ...
        }
}

P.S. еще просьба на будущее - указывать ссылку на пример, о котором идет речь, чтобы при желании его можно было увидеть полностью.

как правильно

как правильно повесить этот addEventListener?)
вот полный код

// connect
// обмен сообщении с сервером
// дизаин
//import flash.net.URLLoader;
//import flash.net.URLRequest;
//import flash.text.TextField;
//import flash.text.TextFieldAutoSize;
//import flash.display.Stage;
//import flash.display.Sprite;
//import flash.events.Event;
//import flash.events.KeyboardEvent;
//import flash.events.IOErrorEvent;

import flash.display.Sprite;
import flash.events.Event;
import flash.Lib;
import flash.display.Loader;
import flash.events.KeyboardEvent;
import flash.net.URLRequest;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.events.IOErrorEvent;

class Test {

var tf : TextField;
var log : TextField;
var online : TextField;
var name : String;

function new () {
        CreateGui ();
}

function CreateGui (){
        tf = new TextField ();
        tf.height = 20;
        tf.width = 500;
        tf.x = 0;
        tf.y = 110;
        tf.type = "input";
        tf.border = true;
        tf.background = true;
        tf.backgroundColor = 0xEEEEEE;
        tf.alwaysShowSelection = true;
        tf.setSelection (0, 9);
        flash.Lib.current.addChild (tf);
/////////////////////////////////////////////////////////////////////////////
        log = new TextField ();
        log.background = true;
        log.backgroundColor = 0xFFFFFF;
        log.border = true;
        log.multiline = true;
        log.height = 100;
        log.width = 500;
        log.x = 0;
        log.y = 0;
        flash.Lib.current.addChild (log);
        display ("Please enter your name in the bottom textfield to login and press ENTER");
        ////////////////////////////////////////////////////////////////////////////
        online = new TextField ();
        online.background = true;
        online.backgroundColor = 0xFFFFFF;
        online.border = true;
        online.multiline = true;
        online.height = 100;
        online.width = 100;
        online.x = 500;
        online.y =0;
        flash.Lib.current.addChild (online);
        addEventListener(flash.events.KeyboardEvent.KEY_DOWN, onKeyDown);
        //flash.events.child.addEventListener (KeyboardEvent.KEY_DOWN, keyDownHandler);
}

function onKeyDown (e : flash.events.KeyboardEvent) {
        // ENTER pressed ?
        //if ( flash.Key.getCode() == 13 ) {
        if ( e.keyCode == 13){ 
        //      var text = tf.text;
        //      tf.text = "";
        //      send (text);
        }
}

function send ( text : String ) {
        if ( name == null ) {
                name = text;
                //api.identify(name);
                return;
        }
        //api.say(text);
        userSay (name,text);
        var loader : URLRequest;
}

public function userJoin ( name ) {
        display ("User join <b>"+name+"</b>");
}

public function userLeave ( name ) {
        display ("User leave <b>"+name+"</b>");
}

public function userSay ( name : String, text : String ) {
        display ("<b>"+name+ " :</b> "+text.split ("&").join ("&amp;").split ("<").join ("&lt;").split (">").join ("&gt;"));
        //var url:String = "http://www.google.com/";
        //var request:URLRequest = new URLRequest(url);
        //var variables:URLVariables = new URLVariables();
        //variables.exampleSessionId = new Date().getTime();
   //variables.exampleUserLabel = "guest";
   //request.data = variables;
   //request.method = URLRequestMethod.POST;
   //navigateToURL(request);
}

function display ( line : String ) {
        //var bottom = (log.scroll == log.maxscroll);
        log.htmlText += line + "<br>";
        //if( bottom )
        //log.scroll = log.maxscroll;
}

static var c : Test;

static function main () {
        c = new Test ();
}

}

Пытался и импортировать его, и без него писать как вот тут: http://haxe.org/forum/thread/1110
Не получилось почемуто...

addEventListener(flash.events

addEventListener(flash.events.KeyboardEvent.KEY_DOWN, onKeyDown);
нужно
"сюда Stage, на котором обработка".addEventListener(flash.events.KeyboardEvent.KEY_DOWN, onKeyDown);