世界上很多大公司都使用 Director 制作自己的多媒体教学光盘。
拼图制作二
看起来很复杂,但实际做一遍并没有那么麻烦,相对使用别的高级语言来编写此程序,Lingo 需要您使用新的思路来考虑编程。它使您不用涉及许多编程细节,而更多的考虑解决问题的方法,而它又没有传统脚本语言那么功能贫乏。
首先,我们需要自己编写几个函数(或个人句柄)。
第一个函数是生成16 个随机列表的函数 generateList。
它的具体代码如下:
on generateList
global gEmpty,randomList
1set randomList = []
repeat with x = 1 to 16
addAt(randomList,random(x),x)
end repeat
end
因为Lingo 没有提供对列表随机排列的功能,所以这里使用了来自Tab Julius 先生的《Lingo !高级指南》中的一段代码,它非常巧妙地通过循环语句中使用 addAt(),random()函数生成随机列表。它在循环中先随机产生列表位置,并将其赋予1-16 中的值,当 addAt()函数向列表中相同位置添加值时,它会将位置推后,这种特殊的工作方式将不会出现重复现象。
第二个函数也是最重要的一个函数 exchange()。 它有一个参数,此参数为通道号。当在一个与空白垂直或水平相邻的拼图上单击时,应将二者的角色对换,即,空白所在的通道将角色换为被单击的通道的角色,而单击的通道的角色换为空白。并将被单击的通道号赋予标识空白所在通道的变量 gEmpty。函数中的变量 x 为临时变量,用于作替换时暂存数据。
on exchange n
global gEmpty
set x to the memberNum of sprite gEmpty
set the memberNum of sprite gEmpty to the memberNum of sprite n
set the memberNum of sprite n to x
updatestage
set gEmpty = n
end
此函数用在每个循环帧中 1-16 号通道,用法如下:
on mouseup
if inList(1) then
exchange 1
puppetsound "click"
end if
end
这里用到了另一个编写的函数 inList(),此函数用于判别当前被单击的通道是否在可移动列表 M 中,如果是在列表 M 中,则返回 TRUE。
网友评论