Показать сообщение отдельно
Старый 25.03.2011, 15:55
Владимир вне форума Посмотреть профиль Отправить личное сообщение для Владимир Найти все сообщения от Владимир
  № 1  
Ответить с цитированием
Владимир
 
Аватар для Владимир

Регистрация: Mar 2011
Сообщений: 7
По умолчанию Почему не работает условие event.keyCode == Keyboard.ENTER

Adobe Professional CS5 (11.0.0.485), AS3, Flash Player 11. Изучаю вообщем ActionScript.

Выполняю пример из руководства http://help.adobe.com/ru_RU/ActionSc...rogramming.pdf
страница 30-38, три раза всё удалял и делал заного...

Там решенный пример, который у меня почему то неработает. По заданию нужно в текстовое поле textIn набрать имя, нажать ENTER, скрипт сверяет это имя со списком имен из массива validNames. Если имя подходит, тогда в текстовое поле mainText пишется сообщение "Hello [name]".

свойства textIn - тип редактируемый, т.е. InputText в английской версии, и ещё во вкладке "контейнер и поток" поведение: однострочный ставлю (как в англ. версии я хз).

Загвостка в том, что по нажатию ENTER ничего не происходит.

код HelloWorld.fla (действие - первого кадра):
Код AS3:
import flash.ui.Keyboard;
 
var myGreeter:Greeter = new Greeter();
mainText.text = myGreeter.sayHello("");
 
mainText.border=true;
textIn.border = true;
 
textIn.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
 
function keyPressed(event:KeyboardEvent):void
{
	if (event.keyCode == Keyboard.ENTER)
	{
		mainText.text = myGreeter.sayHello(textIn.text);
	}
}
код Greeter.as:
Код AS3:
package
{
	public class Greeter
	{
		public static var validNames:Array = ["Sammy", "Frank", "Vova"];
 
		public function sayHello(userName:String = ""):String
		{
			var greeting:String;
			if (userName == "")
			{
				greeting = "Hello. Please type your user name, and then press the Enter key.";
			}
			else if (validName(userName))
			{
				greeting = "Hello, " + userName + ".";
			}
			else
			{
				greeting = "Sorry " + userName + ", you are not on the list.";
			}
			return greeting;
		}
		public static function validName(inputName:String = ""):Boolean
		{
			if (validNames.indexOf(inputName) > -1)
			{
				return true;
			}
			else
			{
				return false;
			}
		}
	}
}
Я для теста в коде заменил event.keyCode == Keyboard.ENTER на event.keyCode == Keyboard.SPACE и всё работало корректно. Хм, но почему тогда ENTER несрабатывает?