您的位置:主页>动画制作>Authorware> Authorware以其丰富的媒体集成和众多的交互控制成为多媒体创作、特别是MCAI课件设计与制作的首选工具,同时其扩展接口(如使用Sprite Xtras、ActiveX Xtras、Scripting Xtras、调用DLL、UCD/U32等)使Authorware进行较高级的程序设计成为可能。在利用Authorware 开发的多媒体项目中,若能适时地加入自己的E-mail发送模块,定可为程序增色许多。本文是一个创作实例,介绍在Authorware中如何编写一个功能全面的E-mail(可以搭载附件)发送程序。由于篇幅所限,本文仅给出该程序的制作要点。 字串8
---- 1.程序的主界面及其功能
----E-mail发送程序运行的主界面如图1所示。 字串2
字串5
----演示窗口的标题名为“电子邮件发送器”。主界面分为左右两部分:左侧为五个输入区域,随时可点击各输入区域(热区响应)进入相应的输入状态,完成所需的文本信息输入。其中E-mail内容输入采用的是分页输入方式(可输入较长的文本)。右侧部分为功能控制按钮:上部是附件的插入、移去按钮及附件的显示区;下面的按钮中前四个是对邮件的内容进行编辑和预览的功能按钮。通过“SMTP设置”按钮可进入对SMTP地址或端口的重新设置(需要时)。单击“开始发送”按钮将发送当前的E-mail (包括附件),同时给出发送是否成功的信息。 字串1
----2.程序设计的主流程 字串3
----程序的主流程如图2所示。 字串4
字串9
----在计算图标“设置窗口标题”中置入:
----SetWindowText(WindowHandle,“电子邮件发送器")
----用于设置窗口标题,其中函数SetWindowText()包含在 winapi.u32文件中(文件winapi.u32可在Authorware 5的安装目录下找到)。 字串3
---- 在“初始化变量”计算图标中可对使用的某些变量预设初值:
smtpHost:=“202.118.48.1"
--发送邮件服务器地址
smtpPort:=25
--发送邮件服务器端口
fromAddress:=zlnu@263.net
--发件人地址
toAddress:=“" --收件人地址
bccAddress:=“" --暗送地址
subject:=“" --邮件主题
messageBody:=“" --邮件内文
attachFiles:=“"
--邮件搭载的附件(多个附件以RETURN分隔)
attachDisplay:=“"
--用于在主界面上显示附件(只显示文件名)
fileCount:=0
--附件的个数
fileChosen:=“"
--插入附件时保留附件的全名(包括路径)
charNum:=0
--附件全名字符的个数
pageNum:=1 --分页输入时内文的页号
currentPage:=“" --内文的当前页
i:=0 --记数变量
result:=0 --发送结果,成功为1,否则为0
----接下来的显示图标用于主界面“底图”的显示。
----3.“主控结构”中各交互分支的设计 字串8
----“主控结构”下的各响应分支均设置为“Perpetual"。同时在 “Response” 属性对话框的Active If域适当地使用系统变量:Within@“标题名" 来界定各个交互分支可被激活的范围。
字串2
----(1)“寄信人地址”热区交互分支的设计流程如图3 所示。 字串6
字串5
----输入结束将跳到下一个输入区(收信人)。在Text Entry 响应的“Interaction Icon"属性对话框中的Erase域选取Don’ t Erase(即输入的内容总在界面上显示)。在“Interaction Text Field"属性对话框中的Action Key(s)域设置TAB|Enter(即确认输入结束的键定义为TAB或Enter)。
字串2
----对“收信人地址”、“暗送地址”和“主题”热区交互分支的设置与“寄信人地址”的设置相类似。
字串7
----(2)“邮件内文”热区交互分支的设计流程如图4所示。 字串6
字串2
----由于Authorware提供的Text Entry只能在输入框内进行输入(有限长的文本),不能滚屏输入。为了能够支持较长的文本输入,这里采用的是“分页输入”的设计,界面上的一页对应变量messageBody中的一行(以Return为分隔符)。
字串1
---- 在“分页输入”交互图标的附着计算图标中置入:
字串5
currentPage:=GetLine(messageBody, pageNum)
PresetEntry:=currentPage
PressKey(“RightArrow")
字串2
----在“*--内文”计算图标中置入: 字串6
messageBody:=ReplaceLine
(messageBody, pageNum, EntryText)
pageNum:=pageNum+1
----在“上一页”和“下一页”计算图标中分别置入: 字串5
messageBody:=ReplaceLine
(messageBody,pageNum, EntryText)
pageNum:=pageNum-1
和
messageBody:=ReplaceLine
(messageBody, pageNum, EntryText)
pageNum:=pageNum+1
字串2
----在“删除本页”计算图标中置入: 字串4
messageBody:=DeleteLine
(messageBody, pageNum)
pageNum:=LineCount(messageBody)
Test(pageNum=0,pageNum:=1) 字串5
----这样通过控制按钮就可以实现对较长的文本进行输入、编辑和修改。为了清楚当前编辑的页号,可在界面上显示下列提示语:
----当前是第{pageNum}页(共{LineCount(messageBody)+1} 页)
字串1
----在“全文浏览”按钮响应分支中使用Text/Scrolling显示方式显示{messageBody},即可对分页输入的文本实现全文预览。 字串6
----(3)在“插入附件”按钮响应分支中,只需用一个计算图标,其中置入下列代码: 字串6
fileChosen:=tMsOpenImageFile(WindowHandle,
“选择需要的附件",“",“",“",“所有的文件")
charNum:=CharCount(fileChosen)
repeat with i:=charNum down to 1
if SubStr(fileChosen, i, i)=“\" then
i:=i+1
exit repeat
end if
end repeat
if attachDisplay=“" then
attachDisplay:=SubStr(fileChosen, i, charNum)
attachFiles:=fileChosen
else
attachDisplay:=attachDisplay^
“r"^SubStr(fileChosen, i, charNum)
attachFiles:=attachFiles^“r"^fileChosen
end if
----执行上述代码将出现一个文件打开对话框,找到需要添加的附件并返回该附件存放的位置。其中变量attachDisplay存放不含路径的文件名,用于在主界面上通过Text/Scrolling方式显示已插入的附件。函数tMsOpenImageFile()包含在文件 tMsControls.u32中(文件tMsControls.u32在Authorware 5的安装目录下可以找到)。 字串8
----(4)“移去附件”按钮响应分支的设计如图5所示。
字串6
----显示图标“显示附件列表”中制作一个底图效果(可以使用截图工具软件),如图6所示。 字串1
字串1
----其中在空白处插入显示对象并在属性对话框中选中 Update Displayed Variables选项: 字串2
{GetLine(attachDisplay, i)} (或{GetLine(attachFiles, i)})
在交互图标“等待删除附件”的附着计算图标中置入:
fileCount:=LineCount(attachFiles)
Test(i=0, i:=1)
Test(i>fileCount, i:=fileCount)
字串6
----“返回”按钮响应分支的组图标设置为空(只是一个结构)。在“删除”计算图标中置入下面两行即可删除显示的附件: 字串4
attachDisplay:=DeleteLine(attachDisplay, i)
attachFiles:=DeleteLine(attachFiles, i)
----在“上一个”和“下一个”热区(图6中的上、下小箭头各定义为HotSpot)响应分支的计算图标中分别置入i:=i-1和i:=i+1即可。
---- 当插入或移去附件之后,在主界面的附件显示域中将更新显示(利用{attachDisplay}并选择Update Displayed Variables选项)。 字串6
----(5)“SMTP设置”按钮响应分支中,通过两个Text Entry交互结构,可对变量smtpHost和smtpPort进行随时更新(如果需要的话)。
字串1
----(6)“开始发送”按钮响应分支主要是利用一个发送函数tMsEmailSend()实现E-mail发送的功能,流程图如图7所示。
字串2
字串6
----在“发送”计算图标中置入下面一行: 字串9
result:=tMsEmailSend(WindowHandle,
smtpHost, smtpPort, fromAddress,
toAddress, bccAddress, subject, messageBody, attachFiles, “") 字串7
----函数tMsEmailSend()包含在文件tMsWebFXEmail.u32 中(文件tMsWebFXEmail.u32可到the Media shoppe公司的站点http://www.mediashoppe.com/ 下载),若邮件信息发送成功,则返回值为1,否则返回0。
----在“result=1”计算图标中置入: 字串3
MessageBox(WindowHandle,
“祝贺你!邮件已成功发出!",“邮件发送结果",0)
----其功能是弹出一个通知消息框。函数MessageBox()包含在winapi.u32中。
----类似地,在“result=0”分支使用该函数提示邮件发送不成功的信息。 字串1
----至此,邮件发送程序的关键部分设计完成。运行起来就可以发送 E-mail了。本程序在Windows 98、Authorware 5.0及使用代理服务器的校园局域网和使用ISDN专线上网的网络环境下均运行通过(若打包运行应配置相应的x32和u32文件)。 字串4
----特别参考
字串9
利用Authorware 5提供的Send E-mail Knowledge Object(实质是利用smtp.u32中的 smSend()函数),只能发送简单的E-mail信息(如:不能搭载附件)。
利用脚本精灵Scripting Xtra: DirectEmail.x32(文件DirectEmail.x32的下载站点为 http://www.directxtras.com/),调用其中的SendEmail方法可实现包括抄送(cc)、暗送(bcc)及附件的Email发送。
本文介绍了利用tMsWebFXEmail.u32中的tMsEmailSend()函数。值得注意的是 tMsWebFXEmail.u32中的另一个函数tMsEmailWindow(),调用这个函数即可生成一个完整的 E-mail发送程序。只是其全英文的界面一眼便知不是“您的”,一般情况下并非完全适合(还需注意的是:未注册使用时将会出现一个警告提示框,可使用其中的函数tMsRegisterWebFX() 对tMsWebFXEmail.u32进行注册,当然您得合法取得注册码)。
也可以使用SMTP类的ActiveX控件实现Authorware中的E-mail发送功能,只是应用起来稍微复杂一些(需要控件的安装与注册等操作),还应对面向对象编程有所了解。
|
字串6 |
[上传时间:2004-04-13 09:41:15] [信息来源:计算机世界] [信息作者:郑永凡] |