#12004/6/25 12:50:35
只是想为多媒体在国内的发展尽一份力。以下是翻译director online 上的一篇关于购物行为的文章,觉得简单有用,所以给大家共享。动机单纯。-------alalala
提问
对lingo来说,我是个新手。我需要创建一个交互的购物订单。我希望使用检查框(CHECK BOXES)并赋予这些检查框以数值。当用户点击相应产品检查框的时候,总价便会在屏幕上刷新,同时相应产品图片也会在屏幕上显示。通过点击舞台上的检查框,总价会相应的增减,相应的图片也会显示和关闭。
回答
想象一下你如何亲手来实现这效果。当用户选择了一个条目,你需要在总价里增加商品的价格;如果用户改变主意,那么你需要在总价里减去这部分价格。你可在lingo里非常容易的实现这点。让我们假设你有一个全局变量叫做gtotal。当用户高亮选择其中一个检查框的时候,相应的价格便被加到总价里。
我们从通过对检查框增加行为开始。你也许会希望可以自定义价格,这将使你可以重复应用行为对应不同的价格。mouseup句柄用来检查演员的hilite状态(也就是检查框是否选取)。如果选取,那么pmyprice数值变被加入gtotal。否则,便从中减去。
Global gtotal
Property pmyprice,pmem
On getpropertydescriptionlist me
Set pdlist to [:]
Addprop pdlist,#pmyprice,[#comment:”my price”,#format:#float,#default:10.00]
Return pdlist
End getpropertydescriptionlist
On beginsprite me
The floatpreccision=2
Pmem=sprite(me.spritenum).member
Pmem.hilite=false
If void(gtotal)then gtotal=0.00
End beginsprite
On mouseup me
If pmem.hilite=true then
Gtotal=gtotal+pmyprice
Else
Gtotal=max(0.00,gtotal-pmyprice)
End if
Pass
End
非常简单。为了看到总价的显示,你需要对域文件或文本文件增加一个行为。这是这个行为的代码,它简单的将总价的数值转换为字符串并将它放置到演员里。
On exitframe me
Pmem.text=sring(gtotal)
End
同时我们希望将点击的条目加入到列表中。下面的命令便可实现这个效果。
On mouseup me
If pmem.hilite=true then
Gorder.add(pmyproduct)
Else
Gorder.deleteone(pmyproduct)
End if
End
最后一步是将选取项目的图片显示出来。创建的行为将会在goder 列表中查找,如果在列表中找到了自己的名字,便会显示;如果没有找到,便会用空白的演员替换。以下是代码主要的部分。
On prepareframe me
If gorder.getone(pmyproduct)=0 then
Psprite.member=pblankmem
Else
Psprite.member=pmygraphic
End if
End
这便是全部了。