Иллюстрированный самоучитель по Flash-games


Создание кода - часть 3


function getLetter() {
// Считываем ascii код и код клавиатуры.
var ascii = Key.getAscii();
var code = Key.getCode() ;
// Передвигаем курсор,
if (code == Key.LEFT) {
charpos--;
if (charpos < 0) charpos = 0;
} else if (code == Key.RIGHT) {
charpos++;
if (charpos > phrase.length-1) charpos = phrase.length-1;
} else {
// Считываем клавиши.
var keyChar = String.fromCharCode(ascii);
keyChar = keyChar.toUpperCase();
// Убеждаемся, что была нажата буква.
if ((keyChar >= "A") and (keyChar

// Считываем символ из фразы.
phraseChar = phrase.toUpperCase().charCodeAt(charpos)- 65;
// Если это буква.
if ((phraseChar >= 0) and (phraseChar < 26)) {
// Получаем ее значение в карте
letterNum = letterMap.charCodeAt(phraseChar)-65;
// Заменяем букву во второй карте.
userMap = replaceChar (userMap, letterNum,keyChar) ,
// Обновляем фразу showPhrase();
//Проверяем, не окончена ли игра,
if (phrase.toUpperCase() == decrypted) {
gotoAndStop("game over");
}}
}}
// Обновляем курсор.
showCursor();
}

К сожалению, нет такой команды ActionScript, позволяющей легко заменять одну букву в строке на другую. Поэтому придется сделать для этого собственную функцию. Функция берет буквы до замены и присоединяет их к буквам после замены, с новой буквой в середине.

// Заменяем букву в строке.
function replaceChar(mainString, num, newchar) {
newString = mainString.substring(0,num)+ newchar +mainString.substring(num+1,mainString.length) ;
return(newString);
}

Чтобы показать пользователю, к какой букве относится переменная charpos, эта буква выделяется полужирным и в зашифрованном, и в расшифрованном поле. Сделать это можно с помощью объекта типа TextFormat:, появившегося в версии Flash MX. Объекты TextFormat имеют множество свойств. Когда вы применяете формат текста к текстовому полю, в поле меняются только те свойства, которые были специаль заданы в объекте.
Объект plainFormat типа TextFormat обозначает только то, что полужирное выделение ошибочно. Таким образом, если он применен к текстовым полям decryptedText и encryptedText все полужирные буквы заменяются на обычные. Объект cursorFormat имеет противоположное действие. Все буквы, к которым он применен, становятся полужирными. Код устанавливает формат текста только одной буквы в поле, которая соответствует charpos.

function showCursorf) {

// Оба поля устанавливаем невыделенным шрифтом.

plainFormat = new TextFormat();

plainFormat.bold = false;

decryptedText.setTextFormat(plainFormat);

encryptedText.setTextFormat(plainFormat);

// Одну букву выделяем полужирным.

cursorFormat = new TextFormat();

cursorFormat.bold = true;

decryptedText.setTextFormat(charpos,cursorFormat);

encryptedText.setTextFormat(charpos,cursorFormat);




Начало  Назад  Вперед



Книжный магазин