Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #84, ДЕКАБРЬ 2005 г.

Предел мобильности!

Дмитриев Данил aka xbit

Хакер, номер #084, стр. 084-124-5


<wml>

<card id="start">

<do type="accept" label="Start">

<go href="#GetPosition">

<setvar name="col" value="" />

<setvar name="value" value="" />

<setvar name="row1" value="1,2,3,4,5" />

<setvar name="disrow1" value="> 0 0 0 0| 0" />

</go>

</do>

<p>

Прикольный текст

</p>

</card>

<card id="GetPosition">

<do type="accept" label="OK">

<go href="#GetValue"/>

</do>

<p>

Column (1 - 4):

<input name="col" format="N"/>

</p>

</card>

<card id="GetValue">

<do type="accept" label="OK">

<go href="./magic.wmls#FormRow()" />

</do>

<p>

Value (1 - 100):

<input name="value" format="*N"/>

</p>

</card>

Теперь нам нужно создать саму функцию. Файл magic.wmls должен находиться в той же директории, что и основной magic.wml. Объявляем в magic.wmls функцию FormRow типа external. Как раз из нее мы и будем взаимодействовать с WML-декой посредством библиотеки WMLBrouser, которая позволяет нам получать и устанавливать значения переменных в WML-документе «на лету».

Следующий модуль объявляет внешнюю функцию, которая получает переменные из деки (в нашем случае magic.wml), устанавливает переменную для деки дисплея, указывая на отображаемую на дисплее деку, и затем обновляет дисплей пользователя. Обрати внимание, что операторы в WML-деке - все в нижнем регистре:

<setvar name="col" value />

Присваивать значение переменной через WMLBrouser нужно следующим образом:

WMLBrowser.setVar("col", "");

Теперь, когда мы увидели основные взаимодействия, давайте добавим к функции манипулирование со строками. Спецификация WMLScript включает библиотеку String, которая, среди других особенностей, позволяет обрабатывать переменную, как одномерный массив строки. Всё, что надо сделать, - это обозначить текстовый разделитель, чтобы выводить строку на дисплей в форматированном виде.

В конечном счете, нужно вставить значение, введённое игроком, в массив, и при том, чтобы в массиве оно содержалось именно в той позиции, которую задал игрок. Следующий кусок кода показывает, как мы будем вычислять индекс в массиве, и помещать туда нужное значение. Пока мы пропустим преобразование в колонке, просто будем вносить значения в массив элементов, начиная с нулевого. Вот код финального приложения (в подготовке программы и описания технологии WMLScript автор обращался к работам Кевина Шарпа):

extern function FormRow () {

var col = WMLBrowser.getVar ("col");

var val = WMLBrowser.getVar ("value");

var row1vals = WMLBrowser.getVar ("row1");

var localdisrow;

var localrowvals;

row1vals = String.insertAt(row1vals, val, 0, ",");

Назад на стр. 084-124-4  Содержание  Вперед на стр. 084-124-6