На саите нашел исходник чата на флеше + 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.
Можно повесить на сцену слушателя событий клавиатуры:
{
if ( e.keyCode == Keyboard.ENTER )
{
// ...
}
}
P.S. еще просьба на будущее - указывать ссылку на пример, о котором идет речь, чтобы при желании его можно было увидеть полностью.
как правильно
как правильно повесить этот addEventListener?)
вот полный код
// обмен сообщении с сервером
// дизаин
//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 ("&").split ("<").join ("<").split (">").join (">"));
//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);