分享
 
 
 

WAP初级教程笔记---6

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

事件 (EVENT)

任务必须绑定倒某个事件上才能做一些有用的事情。

事件发生--〉任务执行,这才是完整的进程控制。

有4个元素可以帮助你完成事件对任务的绑定:<anchor>、<onevent>、<timer>和<do>。

<anchor> 链接

象HTML一样,WML也可以定义到其他程序的链接。在HTML中,链接通常用下划线和特殊颜色的方式表示跟其他内容的区别。在WAP终端上则没有严格的规则说如何表示一个链接,一般采用反白的显示方式。

<anchor>的语法如下:

<anchor

title="STRING"

xml:lang="STRING"

>

<br>, <go>, <img>, <prev>, <refresh>, TEXT

</anchor>

title:链接的标题;

xml:lang:语言编码。

在这种定义方式中,实际上链接一般是通过<anchor>中包括的<go>元素完成的。比如下面的例子定义了2个CARD,点击第一个CARD里的“click me”链接会跳转到第2个CARD:

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http ://www.wapforum.com/DTD/wml_1.1.xml">

<wml>

<card id="Hello" title="Hello">

<p>Hello,

<anchor>click me

<go href="#bye"/>

</anchor>

</p>

</card>

<card id="bye" title="Bye">

<p>Bye, guys</p>

</card>

</wml>

点击前显示:

点击后显示:

------- Hello -------

Hello,

-------- bye --------

Bye, guys

链接还有一种短格式,语法如下:

<a

href="STRING"

title="STRING"

xml:lang="STRING"

>

<br>, <img>, TEXT

</a>

除了跟原来一样的两个属性以外,多了href属性,可以对它直接指定URL。例如下面的例子定义了一个带有图像的链接:

<a title="HotBars" href="wap.hucn.com/HotBars.wml">

<img src="hot.wbmp" alt="Hot Bars" />

</a>

除了跟原来一样的两个属性以外,多了href属性,可以对它直接指定URL。

<onevent> 固有事件

WML定义了4种由用户终端触发的固有事件:

oneventforward:当用户被<go>任务或其他机制(如一个SCRIPT过程)引导到一个CARD时触发;

oneventbackward:当用回被<prev>或其他机制(如在设备上按BACK按钮)引导到一个CARD时触发;

ontimer:当TIMER计时结束时触发。定义TIMER计时器可以使用<timer>元素,见下一节;

onpick:当用户按下一个<option>选项时触发(可以是选中或取消选择)。

把这些事件绑定到一个任务要使用<onevent>元素,它的语法如下:

<onevent

type="oneventforward | oneventbackward | ontimer | onpick"

>

<go>, <noop>, <prev>, <refresh>

</onevent>

下面的例子演示了如何使用固有事件在CARD调入时清空变量。

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="card1">

<onevent type="oneventforward">

<refresh>

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

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

</refresh>

</onevent>

<p>

You have no name!

</p>

</card>

</wml>

<timer> 计时器

看名字就知道,这是个计时器,它在经过规定的计时时间以后产生一个任务。<timer>计时器只在所属CARD里有效:当进入CARD时,计时器开始工作;时间一到,触发任务;如果离开CARD,计时器停止。语法如下:

<timer

name="STRING"

value="NUMBER"

/>

name:可选。指定一个包含计时时间的变量,在计时器开始工作以后,变量的值会逐渐减少。如果这个变量在<timer>之前就已经存在并且赋值为一个非负整数,那后面value属性的值会被忽略,直接使用变量里的值作为计时时限。

value:必选。指定计时时间,以1/10秒为单位。

下面的例子每隔1秒显示不同的文字(当然,你有兴趣改成图像也可以)。

<?xml version="1.0" standalone="yes"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<head>

<meta content="WML Editor 3.2" name="generator" />

</head>

<card id = "hello" title = "Hello">

<onevent type = "ontimer">

<go href = "#card2"></go>

</onevent>

<timer value = "10" />

<p> Hello!</p>

</card>

<card id = "card2" title = "card2">

<onevent type = "ontimer">

<go href = "#card3"></go>

</onevent>

<timer value = "10" />

<p>R U tired?</p>

</card>

<card id = "card3" title = "card3">

<onevent type = "ontimer">

<go href = "#hello"></go>

</onevent>

<timer value = "10" />

<p>Take a rest!</p>

</card>

</wml>

显示结果如下,注意会不断循环。

Sport选择:

第1秒

第2秒

第3秒

------ Hello ------

Hello!

----- Take care ----

R U tired?

------- Rest -------

Take a rest!

还有一个例子,通常用来做网站封面,显示一段欢迎词以后进入正式内容。这里没有使用图片,各位可以自己加上试试看。

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="Welcome to WAP86" ontimer="wap86.wml">

<timer value="30"/>

<p>

Hello!

Welcome to WAP86 - the paradise of WML developers.

</p>

</card>

</wml>

部件

功能

accept

确认,接受输入

prev

退回历史页面访问堆栈里上一个CARD

help

上下文关联的帮助信息

reset

重设设备状态

options

上下文关联的选项或附加操作

delete

删除当前内容或选择

unknown

由开发者自己定义

<do> 用户触发事件

每个WAP终端都预定义了一系列用户界面部件,如手机上的按钮、触摸屏上的图表、声音指令或者其他一些很容易是别的部件。WML1.1定义了右面那些WAP兼容终端必须支持的部件。但是要说明的是,只有prev有预先定义的功能,其他的只是概念上的定义,需要根据开发者激活并赋予一定的动作。

当用户激活这些部件的时候会产生相应的事件。你可以使用<do>元素捕获这些事件并对其做出反应。下面是<do>的语法:

<do

type="accept | prev | help | reset | options | delete | unknown"

lebel="STRING"

name="STRING"

optional="true | false"

xml:lang="STRING"

>

<go> | <noop> | <prev> | <refresh>

</do>

type:必选属性,内容只能是那7种;

label:用户接口部件的显示标签。如果终端不能显示则被忽略。WML1.1建议此属性长度限制在6个英文字符以内;

name:标志“事件/任务”绑定关系的唯一名称(在CARD范围内)。CARD级的<do>事件替换同名的DECK级<do>事件(见下一节)。如果不指定name属性或name为空字符串,则name默认为type的类型;

optional:告诉终端此软按钮在屏幕中是否显示。如果此值设为true,则忽略本<do>元素。默认值为false;

xml:lang任务:语言代码。

跟其他“事件/任务”绑定关系一样,<do>里的任务定义必须是<go>、<noop>、<prev>或<refresh>中的一个。

下面例子演示了<do>的使用方法。用户按了不同的按钮会被导向不同的CARD。

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<card id="Card1" title="WAP86 Links">

<do type="accept" label="Links" optional="false">

<go href="#Links"/>

</do>

<do type="help" label="Help" optional="false">

<go href="#Help"/>

</do>

<p> WAP86’s perfect links</p>

</card>

<card id="Links" title="WAP86 Links">

<p> Select one:<br><br>

<a href="wap.hucn.com">hucn</a><br>

<a href="wap.hucn.com">hucn</a>

</p>

</card>

<card id="help" title="Help">

<do type="accept" label="Links" optional="false">

<go href="#Links"/>

</do>

<p>

Select "Links" button to view the links.

</p>

</card>

</wml>

显示结果

主画面:

按下“Links”按钮以后:

按下“Help”按钮以后:

---- WAP86 Links ---

WAP86’s perfect links

Links Help

---- WAP86 Links ---

Select one:

>[ WAP86 ]

[ AT86 ]

------- Help -------

Select "Links" button to view the links.

Links

DECK级事件

前面已经讲过可以用<template>元素定义DECK级事件,做法跟CARD级事件一样,只要在<template>元素里包含<do>或<onevent>事件就可以。这种做法可以定义一些在每个CARD里都需要定义的事件,而不需要重复说明。

比如下面的例子给所有的CARD定义了BACK按钮以便返回上一页:

<?xml version="1.0"?>

<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"

"http://www.wapforum.org/DTD/wml_1.1.xml">

<wml>

<template>

<do type="prev" label="BACK" optional="false">

<prev/>

</do>

</template>

<card id="Links" title="WAP86 Links">

<do type="help" label="Help" optional="false">

<go href="#Help"/>

</do>

<p> Select one:<br><br>

<a href="wap.hucn.com">hucn</a><br>

<a href="wap.hucn.com">hucn</a>

</p>

</card>

<card id="help" title="Help">

<do type="accept" label="Links" optional="false">

<go href="#Links"/>

</do>

<p>

Select "Links" button to view the links.

</p>

</card>

</wml>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有