Предел мобильности! Дмитриев Данил 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, ","); |