Пособие по написанию WAP-сайтов

       

Рассмотрение файла сценария CurrencyScriptl .wmls



Рассмотрение файла сценария CurrencyScriptl .wmls

Как уже упоминалось ранее, при первоначальном запуске приложения вызывается функция Initialize (Инициализация), находящаяся в файлеCurrencyScriptl.wmls. Позже, когда пользователь выбирает тип валюты, приложение вызывает вторую функцию из WMLScript-файла, которая выводит приглашение пользователю на ввод суммы денег, пересчитываемой затем приложениемв другие валюты. В настоящее время WMLScript-код необходимо размещать в отдельном файле и предварять имя каждой функции ключевым словом extern.Сценарий CurrencyScriptl .wmls реализуется с помощью следующего программного кода:

extern function Initialize()

{

var EuroToDollar = "1.02982"; var PoundToDollar = "1.64649"; var YenToDollar = "0.00947277";

WMLBrowser.setVar("EuroToDollar", EuroToDollar); WMLBrowser.setVar("PoundToDollar", PoundToDollar); WMLBrowser.setVar("YenToDollar", YenToDollar);

var USDollar = 100.00; var Euro = USDollar / Lang.parseFloat(EuroToDollar); var UKPound = USDollar / Lang.parseFloat(PoundToDollar); var JapanYen = USDollar / Lang.parseFloat(YenToDollar);

USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", JapanYen);

WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);

WMLBrowser.refresh();

}

extern function GetUSDollar()

{



var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");

var USDollar = WMLBrowser.getVar("USDollar"); USDollar = Dialogs.prompt("US Dollars", USDollar);

var Euro = Lang.parseFloat(USDollar) / Lang.parseFloat (EuroToDollar); var UKPound = Lang.parseFloat(USDollar) / Lang.parseFloat (PoundToDollar); var JapanYen = Lang.parseFloat(USDollar) / Lang.parseFloat (YenToDollar);




USDollar = String.format("%3.2f", Lang.parseFloat(USDollar)); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", JapanYen);

WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);

WMLBrowser.refresh();

}

extern function GetEuro()

{

var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");

var Euro = WMLBrowser.getVar("Euro"); Euro = Dialogs.prompt("Euro", Euro);

var USDollar = Lang.parseFloat(Euro) * Lang.parseFloat (EuroToDollar); var UKPound = USDollar / Lang.parseFloat(PoundToDollar); var JapanYen = USDollar / Lang.parseFloat(YenToDollar);

USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Lang.parseFloat(Euro)); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", JapanYen);

WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);

WMLBrowser.refresh();

}

Внутри функции Initialize каждому типу валюты присваивается значение коэффициента пересчета. В реальном приложении, сценарий получал бы текущиекурсы валют из базы данных. После того как функция присвоила коэффициентыпересчета своим переменным, программа должна с помощью функцииWMLBrowser. setVar сделать значения переменных видимыми за пределамифункции (другими словами, в результате этой операции значения переменныхстановятся видимыми для программного кода WML-страницы). Затем функцияInitialize форматирует коэффициенты пересчета валют для отображения втаблице, вызывая для этого функцию String.


format.

Как упоминалось ранее, всякий раз, когда пользователь выбирает тип валюты,приложение вызывает соответствующую выбранной валюте функцию, котораявыполняет пересчет в другие валюты. Например, если пользователь выбираетевро (Euro), приложение вызывает функцию GetEuro, которая, в свою очередь,активизирует функцию Dialogs. prompt, чтобы принять вводимые пользователем данные. Затем программа выполняет пересчет, присваивает результаты переменным, которые приложение отображает в таблице. Активизируя функциюWMLBrowser. refresh, приложение отдает браузеру команду обновить информацию на экране сотового телефона.

Как обсуждалось выше, из-за ограничений, накладываемых WML-браузерами наразмер WML-страницы, приложение разбивает сценарий на два файла. Например, сценарий CurrencyScript2.wmls реализуется с помощью следующего программного кода:

extern function GetUKPound()

{

var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");

var UKPound = WMLBrowser.getVar("UKPound"); UKPound = Dialogs.prompt("UK Pounds", UKPound);

var USDollar = Lang.parseFloat(UKPound) * Lang.parseFloat (PoundToDollar); var Euro = USDollar / Lang.parseFloat(EuroToDollar); var JapanYen = USDollar / Lang.parseFloat(YenToDollar);

USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", Lang.parseFloat(UKPound)); JapanYen = String.format("%3.2f", JapanYen);

WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);

WMLBrowser.refresh();

}

extern function GetJapanYen()

{

var EuroToDollar = WMLBrowser.getVar("EuroToDollar"); var PoundToDollar = WMLBrowser.getVar("PoundToDollar"); var YenToDollar = WMLBrowser.getVar("YenToDollar");



var JapanYen = WMLBrowser.getVar("JapanYen"); JapanYen = Dialogs.prompt("Japan Yen", JapanYen);

var USDollar = Lang.parseFloat(JapanYen) * Lang.parseFloat (YenToDollar); var UKPound = USDollar / Lang.parseFloat(PoundToDollar); var Euro = USDollar / Lang.parseFloat(EuroToDollar);

USDollar = String.format("%3.2f", USDollar); Euro = String.format("%3.2f", Euro); UKPound = String.format("%3.2f", UKPound); JapanYen = String.format("%3.2f", Lang.parseFloat(JapanYen));

WMLBrowser.setVar("USDollar", USDollar); WMLBrowser.setVar("Euro", Euro); WMLBrowser.setVar("UKPound", UKPound); WMLBrowser.setVar("JapanYen", JapanYen);

WMLBrowser.refresh();

}


Дополнительную информацию по операторам и функциям WMLScriptможно найти в Приложении С, «Справочник по WMLScript».



Содержание раздела