Еще раз напомню теги и разделю их на группы
Начальные теги
<access> Определяет информацию о доступе к деке
<card> Определяет карту в деке
<head> Содержится информация о документе
<meta> Определяет встречную информацию о документе
<template> Определяет код template'а для карт в деке
<wml> Начало документа
<!--> Коментарий
Текстовые элементы
<br> Определяет линию разрушения (я точно непонял зачем и что это)
<p> Определяет параграф
<table> Определяет таблицу
<td> Определяет таблицу
<tr> Определяет таблицу ряда
Теги форматирования текста
<b> Определяет жирный шрифт
<big> Определяет большой шрифт
<em> Определяет хз что ...)) (возможно наклонный текст)
<i> Текст курсивом
<small> Определяет маленкий шрифт
<strong> Определяет сильный шрифт ))
<u> Определяет подчеркивание
Элементы действия
<a> Определяет линк.Всегда выполняет "go" задание, без переменных
<anchor> Определяет линк.Устанавливает что делать когда юзер выберет линк
Картинки
<img> Определяет картинку
Событие элементов
<do> Активируется кода юзер кликает на слово\выражение на экране
<onevent> Содержит код исполняемый когда один из элементов следует собтия : onenterbackward, onenterforward, onpick, ontimer
<postfield> Содержит информацию о посланном серверу по тегу <go>
Элементы задания
<go> Представляет действие переключения на новую карту
<noop> Говорит что ничего не следует делать.
<prev> Представляет действие перехода назад на предыдущу карту
<refresh> Представляет обновление страницы
Вводные элементы
<fieldset> Использует вместе групу расказываеющую об элементах карты
<input> Определяет поля для ввода
<optgroup> Определяет группу опцый в выбранном листе
<option> Определяет опцию выбранного листа
<select> Определяет выбранный лист
Непостоянные элементы
<setvar> Направление непостоянного элемента точно определяет значение в <go>, <prev>, или <refresh>
<timer> Определяет время карты
И подконец расскожу о самом главном.Библиотеки WMLScript.
Если действительно делать что-то стоещее то без них не обойтись...прийдётся использовать библиотеки, встроенные в спецификацию WAP 1.1
В WAP 1.1 встроено шесть стандартных библиотек:
Преобразование булевских, целых и обычных переменных (LANG)
Операции с плавающей точкой (FLOAT)
Операции со строками (STRING)
Манипуляции с абсолютными и относительными URL (URL)
Взаимодействие с WML броузером (WMLBrowser)
Пара основных функций интерфейса пользователя (DIALOGS).
Давайте разберемся как работать с этими библиотеками на примере magic square, в которой игрок помещает целые числа в квадратную матицу, следя за тем , чтобы сумма чисел в столбцах равнялась сумме в строках.Итак, создадим WML- документ и назовем его magic.wml.Он будет содержать весь интерфейс пользователя и логику игры.А также сздадим всторой фаил, в котором будут вычисляться все вычисления.
Для начала мы должны описать взаимодействие между основными элементами пользовательского интерфейса и функциями WMLScript.
Создадим дэку. Она сперва будет спрашивать у игрока позицию и значение целого числа, которое будет помещено в массив, а затем будет вызывать функцию, для того, чтобы положить этот элемент в массив. Обратите внимание, что когда игрок нажмёт кнопку "OK", чтобы ввести значение, то наша дэка вызовет функцию FormRow , находящуюся в "./magic.wmls". Здесь пример кода дэки, вызывающей функцию.
<wml>
<card id="start">
<do type="accept" label="start">
<go href="#getposition">
<setvar name="col" value="" />
<setvar name="value" value="" />
<setvar name="col" value=""/>
<setvar name="row1" value="1,2,3,4,5"/>
<setvar name="disrow1" value="> 0 0 0 0| 0" />
</go>
</do>
<p>
текст
</p>
<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>
</wml>
Теперь нам нужно создать собственно саму функцию. Файл magic.wmls должен находиться в той же директории, что и основной magic.wml. Объявляем в magic.wmls функцию FormRow типа external. Как раз из этой функции мы и будем взаимодействовать с WML дэкой посредствам библиотеки WMLBrouser. Библиотека позволяет нам получать и устанавливать значения переменных в WML документе прямо из функции. Полный список функций WMLBouser можно посмотреть здесь.
Следующий модуль объявляет внешнюю функцию, которая получает переменные из дэки (в нашем случае magic.wml), устанавливает переменную для дэки дисплея , указывая на отоброжаемую на дисплее дэку, и затем обновляет дисплей пользователя. Код модуля здесь. Обратите внимание, что операторы в WML дэке - все в нижнем регистре:
<setvar name="col" value />
Присваивать значение переменной через WMLBrouser нужно следующим образом:
WMLBrowser.setVar("col", "");
Теперь , когда мы увидели основные взаимодействия, давайте добавим к функции манипулирование с строками. Спецификация WMLScript включает библиотеку String которая, среди других особенностей, позволяет Вам обрабатывать переменную как одномерный массив строки. Всё, что надо сделать - это обозначить текстовый разделитель, чтобы выводить строку на дисплей в форматированном виде. Более детальное опасание функций библиотеки String здесь.
В конечном счёте, нам нужно вставить значение, введённое игроком, в массив, и при том, чтобы в массиве это значение содержалой именно в той позиции, значение которой задал игрок. Следующий кусок кода показывает - как мы будем вычислять индекс в массиве и помещать туда нужное значение. Пока мы пропустим преобразование в колонки, и просто будем вносить значения в массив элементов, начиная с нулевого значения. А вот преобразовывать будем в следующей статье, посвящённой библиотеке Lang.
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, ",");
WMLBrowser.setVar ("disrow1", row1vals);
WMLBrowser.setVar ("row1", row1vals);
WMLBrowser.go ( "magic.wml#DisplayResult" );
WMLBrowser.refresh();
}
-----------------
Самое важное что нужно усвоить при написании wap сайтов это:
1)САЙТЫ НУЖНО СТРОИТЬ ИСХОДЯ ИЗ КОЛОДЫ КАРТ
2)РАЗМЕР СТРАНИЦЫ ЛУЧШЕ ОГРАНИЧИТЬ 4-5 ЭКРАНАМИ
3)ПЕРДПОЧТИТЕЛЬНЫ ТЕГИ select/option , ЧЕМ ЧТО-ТО ДРУГОЕ
4)ПОМЕНЬШЕ РИСУНКОВ
5)РИСУНКИ ДОЛЖНЫ БЫТЬ В СПЕЦИАЛЬНОМ ФОРМАТЕ "WBMP"
5) РАЗМЕР САЙТА НЕ БОЛЕЕ 1.4 КБ (а может и меньше, все зависит от конкретного телефона)
Сылки по теме:
http://www.softlinks.ru/scripts/s147p1.php
http://www.softportal.com/downloadsubsection/77 - софт
http://wapmaker.net/?m=host - это тому кто не верил что вап ИнОгДа предостовляется как отдельная услуга
http://www.wmaster.ru/xml/wmlfaq.htm - все для чайников
PS В статье использовались материалы из
МнОгИх источников\сайтов. Особо я бы хотел отметить то что я использовал некоторые части статьи из журнала ][ ... та статья была написана хорошо, но написано там ИМХО маловато поэтому я решил узнать о вап побольше и... это все вылилось вот в эту статью )