频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Authorware中实现长文本输入四法

来源: 作者: 出处:巧巧读书 2006-10-13 进入讨论组

  笔者在使用Authorware制作多媒体作品的过程中遇到如下问题:Authorware 提供的Text Entry文本输入交互类型,只能在预先定义的输入框内输入有限长度的文本。经过实践,笔者总结出四种方法可以实现长文本的输入:ActiveX控件法、外部编辑法、外部函数法和分页输入法
  一、ActiveX控件法
  Authorware从4.0版开始支持ActiveX控件,使Authorware共享Windows及其它应用程序的资源成为可能,大大提高了用Authorware进行高级程序设计的效率。微软提供的文本编辑控件常见的有两个:TextBox控件 (随Windows 95/98自动安装在系统中)和RichText控件(可
以在Visual Basic 5.0/6.0中文版找到,即Richtx32.ocx文件)。经测试,TextBox控件在Authorware中不能正常显示中文文字,但可以接收。笔者使用VB5中文版的RichText控件取得了满意的效果,方法如下:
  通过选单命令Insert/Control…在Authorware的流程线上插入RichText控件的一个实例(当然你的系统中应安装注册了该控件,并安装了VB),并适当设置其属性值,主要有:Multiline为True,ScrollBars为3 - rtfBoth等,然后通过一个交互结构来实现对控件输入框
的内容进行读取并保存在自定义变量TextStr中,见图1。
  在计算图标“确定”中置入:
  TextStr:=GetSpriteProperty(@"RichText Control",#Text)
  --用于读取RichText控件的Text属性值。
  值得注意的是,欲使插入该控件的程序打包发布后能正确运行,需要文件Activex.x32的支持,如果目标系统没有安装注册该控件的话,应同时发布该控件Richtx32.ocx并在目标机器上注册该控件。利用Xtra ActiveX函数对控件的检测与动态注册可参见Authorware提供的例程activex.a4p(或activex.a5p)的相应部分。

  二、外部编辑法
  在需要输入文本的时候,通过系统函数JumpOutReturn()调用Windows的记事本程序编辑待输入的文本(并将其存盘),然后用系统函数ReadExtFile()读取该文件,程序的结构如图
2。
  其中,第一个计算图标中置入:
  JumpOutReturn("notepad.exe",RecordsLocation^"mystr.txt")
  第二个计算图标中置入:
  TextStr:=ReadExtFile(RecordsLocation^"mystr.txt")
  这段程序还可以灵活些,比如使用Open File Dialog知识对象,通过一个打开文件对话
框搜寻并返回(赋予变量)文本编辑程序或文本文件。

  三、外部函数法
  使用随Authorware安装光盘附带的一个UCD外部扩展函数文件:Scrledit.u32,执行其中
的函数ScrollEdit()将调出一个可以滚动输入的文本编辑框,具体用法可由下面的程序段实
现。
  在“设置变量”计算图标中置入:
  left:=WindowLeft+100
  top:=WindowTop+100
  right:=WindowLeft+500
  bottom:=WindowTop+300
  在“等待输入”计算图标中置入:
  TestStr:=ScrollEdit("M","FirstWindow",""^left^","^top^","^right^","^bottom^"
",Tab,"","System",12)
  --在演示窗口左上角(100,100)、右下角(500,300)的矩形区域开辟一个名为FirstWind
ow的可编辑的滚动文本框,设置字体为System,字号为12,按Tab键输入结束,输入的文本由
TextStr接收。
  CloseWindow("FirstWindow")
  --关闭指定的FirstWindow窗口。
  在显示图标“提示”中输入提示语:请输入,按TAB键输入结束!
  需要提醒注意的是:在文件Scrledit.u32中函数ScrollEdit()的位置参数的语法描述(
Description)部分有一个小小的错误。另外,Scrledit.u32应随打包文件一同发布。

  四、分页输入法
  设计思路:虽然Authorware的Text Entry交互响应一次不能实现长文本的输入,我们可
以将待输入的文本分解为若干页(段)分别输入,以回车键Enter作为每页输入的结束标志,
即'\r'作为页与页之间的间隔符。变量TextStr用以承接输入的文本,初值设为空,它的一行
对应一页;PageNum记录当前的页号码,初值为1;每一页的内容可随时进行增、删、改操作
。如图4,用一个交互结构生成分页文本编辑器:
  其中,在“分页输入”的附着计算图标中置入:
  CurrentPage:=GetLine(TextStr,PageNum)
  PresetEntry:=CurrentPage
  PressKey("RightArrow")
  --从串TextStr中读取PageNum页/行的内容并在输入区显示。
  在“*--输入”计算图标中置入:
  TextStr:=ReplaceLine(TextStr,PageNum,EntryText)
  PageNum:=PageNum+1
  --将当前输入页中的文本写入/替换TextStr的对应页,进入下一页的编辑。
  在“”计算图标中分别置入:
  TextStr:=ReplaceLine(TextStr,PageNum,EntryText)
  PageNum:=PageNum-1
  TextStr:=ReplaceLine(TextStr,PageNum,EntryText)
  PageNum:=PageNum+1
  在“删除本页”计算图标中置入:
  TextStr:=DeleteLine(TextStr,PageNum)
  PageNum:=LineCount(TextStr)
  Test(PageNum=0,PageNum:=1)
  在交互图标中可以插入下列提示语:
  当前是第{PageNum}页(共{LineCount(TextStr)+1}页)
  在“全文浏览”分支中用一个显示图标显示文本:{TextStr}(选取选单项Text/Scroll
ing),这样就可以对输入的文本进行全文预览,一个可输入任意长文本的简易编辑器制作完
成。

  结语:上面给出的这四种方法各有长短,第一种方法实现的界面效果符合Windows规范,但需对面向对象编程有所了解;第二种方法在打开记事本程序时,应注意本程序将放在后台运行;第三种方法实现较为简单,但需配置好函数ScrollEdit()的参数;第四种方法使用的是一种实现长文本输入的“迂回战术”。前三种方法能否正常运行依赖于目标系统的配置(控件是否正确安装、注册,外部编辑器或外部函数是否存在),而第四种方法与目标系统无关,是“纯”Authorware的。转载保留:http://www.qqread.com/authorware/n223283.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章