AuthorWare中实现进度存取

  • 来源: 互联网 作者: 若水   2008-03-21/13:52
  • 很多软件的使用中都有存储进度和载入进度的功能,我为此想到如果能在AuthorWare中实现进度存取也是非常有用的。希望本文介绍的方法对大家丰富自己的AuthorWare作品有帮助。

    我是利用了AuthorWare中文件属性的一个选项(Resume)的功能实现进度存取。为了说明问题且不烦琐,这里我设计了可存取两个进度的例子。(本例用AuthorWare4.0制作,源文件可从tcfwfw.yeah.net上下载)。

    准备知识:

    1、函数说明。
    Restart()------从头开始运行。
    QuitRestart()-----下次运行时从头开始运行。
    JumpFile("文件名","变量名")-----退出当前执行文件,运行指定的文件,并把变量的值也传给指定文件的同名变量。也可以不给变量名,如:JumpFile("文件名”)。
    CopyFile("源文件名", "目标文件名"),这是AuthorWare的外部函数放在copyfile.u32文件中,调用这个函数可实现文件拷贝。

    2、变量说明。
    RecordsLocation----为系统变量,其值通常为为c:\windows\a4w_data。如你的windows装在d:\windows则其值为d:\windows\a4w_data。此目录是用来存放AuthorWare的记录文件(*.rec)和其他文件。
    X-----为自定义变量。

    3、在AuthorWare中文件属性的一个选项(Resume)大家不常用到,见下图:

    它的作用是a4p文件打包成EXE后,除了第一次,以后每次运行并不是从头开始运行,而是从上次运行结束的地方开始继续运行。那大家会想这个EXE文件怎么知道上次运行到什么地方呢?熟知AuthorWare的人都知道有个c:\windows\a4w_data是用来放置AuthorWare的记录文件的。即使你没有装AuthorWare,只要你运行了用AuthorWare制作的作品这个目录会自动建立。
    当任何一个AuthorWare文件(如1.a4p)文件属性被设置为Rusume时,在此目录下就会有个记录文件存在(如1.rec)。你将文件打包(1.a4p---->1.exe)运行后退出,此文件(1.rec)就记录了文件1.exe的退出时的运行状况。当1.exe再次运行时并不从头开始运行,而是读取1.rec记录文件继续上次执行。

    在本例中需要生成两个AuthorWare文件(1.a4p和2.a4p)且要打包后运行,1.a4p是主程序,2.a4p是用来处理记录文件的。两个文件打包后文件名分别为1.exe和2.exe。
    1.a4p制作流程如下:

    从新开始计算图标里为:Restart()。
    退出计算图标里为:QuitRestart()。
    存储进度一计算图标里为:x=1;JumpFile("2.exe","x")。跳到2.exe并把变量x的值传给2.exe中的x变量。(2.exe为2.a4p打包后的文件)
    存储进度二计算图标里为:x=2;JumpFile("2.exe","x")。
    载入进度一计算图标里为:x=3;JumpFile("2.exe","x")。
    载入进度二计算图标里为:x=4;JumpFile("2.exe","x")。

    2.a4p的流程如下:

    x=1计算图标里为:CopyFile(RecordsLocation^"1.rec",RecordsLocation^"save1.rec");
    JumpFile("1.exe")。
    RecordsLocation为系统变量,它的值即为AuthorWare存放记录文件的目录,1.exe为1.a4p打包后的文件。 执行此计算图标作用是把1.rec复制一份取名为save1.rec。
    x=2计算图标里为:CopyFile(RecordsLocation^"1.rec",Recordslocation^"save2.rec");
    JumpFile("1.exe")。
    x=3计算图标里为:CopyFile(RecordsLocation^"save1.rec",Recordslocation^"1.rec");
    JumpFile("1.exe")。
    执行此计算图标作用是用save1.rec文件替代1.rec。
    x=4计算图标里为:CopyFile(RecordsLocation^"save2.rec",Recordslocation^"1.rec");
    JumpFile("1.exe")。
    决策判断图标里的设置如下:

    Branch选项为To Calculated Path,根据X的值决定执行哪个分支。X的值是从1.exe传过来的。

    这里我把本例的运行过程给大家解释一下:一开始当然是运行主程序1.exe,当你需要保存进度时(假设你保存在进度一),就退出1.exe运行2.exe,将1.rec复制一份为save1.rec,再退出2.exe运行1.exe。当你需要调入进度一时,就退出1.exe运行2.exe,用save1.rec把1.rec覆盖掉,再退出2.exe运行1.exe。
    我在这里之所以在两个文件中跳来跳去是因为当1.exe在运行时1.rec文件是被保护的,无法对1.rec文件进行拷贝。所以我采用先退出1.exe,拷贝好之后再运行1.exe。大家放心,因为1.exe文件属性设置为Resume,所以跳回去时还是在原处。每当运行1.exe,都会读取1.rec,我利用替换1.rec文件的方法实现进度的存取。大家如有其他好的方法请不吝赐教


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多