主题:  怎样自己制作“知识对象”

bigflyman

职务:普通成员
等级:1
金币:0.0
发贴:87
#12002/6/18 17:34:04
如标题!
thanks



魔岩

职务:版主
等级:6
金币:34.0
发贴:4453
#22002/6/18 18:31:42
关于KO的制作
 

关于KO的制作

by cryingfox

制作课件的过程中总有不可避免的大量重复性劳动的存在,自己做一些Knowledge Object可以最大程度上减少这些重复性劳动。比如:总有许多显示图标需要加上一些过渡效果,而这些过渡效果往往是随机选择的,制作内容多的时候,为显示图标加上过渡效果也是一件相当烦人的工作。 我做过一个给程序中所有显示图标加上随机过渡效果的Knowledge Object,过程就是历遍整个程序的图标树,将所有的图标都入队,然后一个个地出队,遇到是显示图标的,就为它加上随机的过渡效果。
知识对象就是一个A5D的模板文件,它和一个简单的模板文件的不同之处仅在于知识对象是和一个向导程序紧密结合在一起的。用户使用知识对象的过程就是用户从知识对象窗口拖动一个知识对象到主流程?呱希头攀蟊昊蛩髦抖韵笸急旰螅椭抖韵笙喙亓南虻汲绦蚓妥远舳鹄矗徊讲揭加没Ы邢旅娴牟僮鳌K灾抖韵蟀礁霾糠郑抖韵笸急旰鸵桓鲇胫喙亓南虻汲绦颍抖韵 笸急昃褪恰皌arget”的概念,向导程序就是“wizarrd”。
一个知识对象关键的是在wizzard的编写,wizzard的编写和一般的authorware程序的不同之处在于:根据用户的响应,要用大量的Calltarget()函数对目标知识对象图标做处理。
用Knowledge Object必须注意下面几点:
1.Copyicons,Cuticons函数在打包后无效。
2.Pasteicons, Cuticons函数如果是知识对象是locked的时候无效。
3.随时检查Calltarget的返回值,判断是否有错误的发生。
4.注意Filelocation在Knowledge Object和wizzard中是不同的。
附:下面的程序时历遍a5p文件中每一个图标,并给显示图标加上随机过渡效果。
_BranchList := []
--建立一个空的线性表
AddLinear(_BranchList, CallTarget("GetVariable", "RootIcon") ^", 0")
--将根图标的ID加入到线性表中
repeat while ListCount(_BranchList)>0
--线性表不为空时,重复进行下列操作:
_ParentIcon:=GetNumber(1, _BranchList[1])
--得到线性表中当前第一个图标的ID,并把它赋给_parenticon变量
repeat with _ChildNum :=1 to CallTarget("IconNumChildren", _ParentIcon, GetNumber(2, _BranchList[1]))
--从当前父图标的第一个孩子到循环最后一个孩子,孩子个数的计算方法由父图标的类型决定。(框架图标有特别的计算方法)
_ChildIcon := CallTarget("ChildNumToID", _ParentIcon,_ChildNum, GetNumber(2, _BranchList[1]))
--得到当前孩子的ID
_ChildTitle := CallTarget("IconTitle", _ChildIcon)
--得到当前孩子的图标名称
if CallTarget("IconType", _ChildIcon) = 4



与人同乐

职务:管理员
等级:6
金币:18.0
发贴:3928

bigflyman

职务:普通成员
等级:1
金币:0.0
发贴:87
#42002/6/19 20:07:41
有些乱码看不懂$$##