Authorware实战开发专题(5-3)

  •   2009-07-09/15:32
  •    利用ActiveM!.u32制作图形菜单

    ActiveM!是2002年4月20日新鲜发布的Authorware 32位外部扩展函数库,由Authorware扩展开发牛人、磨鉴互动数字媒体试验室张方正(老张)开发。ActiveM! 的前身是著名的Authorware扩展函数库MJSAPI,从5.0版开始,MJSAPI正式更名为ActiveM!。

    ActiveM!.u32提供了一系列制作图形菜单的扩展函数,包括右键图形菜单全系列,支持鼠标左/右键弹出、菜单图标、菜单的不同状态、动态添加、删除、插入菜单、修改菜单文字、图形等。看了功能描述介绍是不是有点兴奋的感觉,其实上面提到的系列扩展函数只是ActiveM!.u32的一小部分函数功能,ActiveM!.u32堪称世界上最强大的Authorware扩展功能库,欲了解更多的信息,请到它的主页:http://www.mjssoft.com。马上把ActiveM!.u32关于菜单类系列函数介绍给大家:
    M_CreatePopupMenu() 新建一个弹出式菜单
    M_PopupUpMenu() 弹出一个弹出式菜单
    M_DestroyPopupMenu() 卸载一个弹出式菜单
    M_GetSelectedMenuItemIndex() 获得用户当前所选择的菜单项目索引
    M_GetSelectedMenuItemText() 获得用户当前所选择的菜单项目标题
    M_IsThereAPopupMenu() 检查是否已经建立了一个弹出式菜单
    M_SetMenuItemChecked() 设置某一菜单项为选中状态
    M_GetMenuItemChecked() 获得某一菜单项是否为选中状态
    M_SetMenuItemStatus() 设置某一菜单项的状态为允许/禁止
    M_GetMenuItemStatus() 获得某一菜单项的允许/禁止状态
    M_ChangeMenuItemIcon() 动态改变某一菜单项的图标
    M_ChangeMenuItemText() 动态改变某一菜单项的标题
    M_InsertMenuItem() 动态插入一个新的自菜单项
    M_AppendMenuItem() 动态追加一个新的菜单项
    M_RemoveMenuItem() 动态删除一个菜单项
    M_ResetMenuItemIndex() 复位前一次菜单项选择状态,以备下一次新的选择

    了解了上面的函数后,我们马上来熟悉它的图形菜单制作方法。和上面介绍的两个U32不同,ActiveM!.u32采用的是利用外部TXT列表文件创建菜单的方法,也就是说要产生菜单,必须事先编辑一个TXT菜单初始化信息列表文件,其具体格式如下(每个菜单项用5行表示):

    菜单项的名称 即显示在菜单上的文字
    菜单项的层次 1表示一级菜单,2表示二级菜单
    菜单项的图标文件 即显示在菜单项左端的小图标,如该菜单项不需要图标,则该行留空
    菜单项的状态 为1或0,表示该菜单项是正常可用的还是被禁止[灰色显示]
    菜单项的选中状态 为1或0,表示该菜单项是否被选中,被选中的菜单项左端有一个小勾,如果该菜单项包含图标,则图标被强化显示表示已经被选中

    另外菜单项之间的分隔符[在菜单中显示为一条水平线]也是一个特殊菜单项,也需要占用以上5行,它的设置是:名称为一个短的减号"-",层次设置为其所在的实际层次,图标文件项留一空行[不是空格],其余两项设置为0。

    了解TXT菜单列表文件的格式后,我们来制作一个ActiveM!.u32的菜单范例吧。首先我们编写菜单初始化信息列表文件(TXT文本),具体内容如下:
    Windows Media Player 1
    MenuList\Windows Media Player.ico
    1
    0
    Favorites
    1
    MenuList\Favorites.ico
    1
    1
    -
    1
    1
    1
    Game
    1
    1
    0
    Minesweeper
    2
    MenuList\Minesweeper.ico
    1
    0
    Solitaire
    2
    1
    1

    其实菜单初始化信息文件类似一个资源连接列表,因此必须确保TXT文本中的ICON图标文件路径正确而且存在,否者将没法正常显示。

    TXT存盘后,我们就可以在Authorware中利用ActiveM!.u32的M_CreatePopupMenu()函数创建菜单,例如菜单初始化信息文件命名为Menu.txt,存放路径为当前文件的MenuList文件夹下,则写法为M_CreatePopupMenu(WindowHandle,"MenuList\\Menu.txt"),然后用M_PopupUpMenu(0,0,0)函数就可以弹出菜单拉,具体效果如下图5.17所示:



    图5.17利用ActiveM!.u32制作图形菜单

    哇,是不是十分的酷?可是天下没有免费的午餐,ActiveM!.u32并不是一个免费的扩展函数库,需要注册购买,没有注册的共享版本只能使用80天,而且有版权说明窗口等限制。如果单单是为了制作菜单而购买一个ActiveM!.u32肯定是没有必要,毕竟实现的方法是多元化,动动脑子可以做的更好,何乐而不为呢?无论怎么说,ActiveM!.u32的确是一个功能强大的Authorware扩展函数,有兴趣的读者可以自行研究它的其它功能函数。

    专题总结

    制作Windows标准菜单方法当然不止上面的三种方法,例如我们可以模仿设计一系列和Windows标准菜单类似的图片然后再进行交互程序设计,可是这样的话肯定没有上面的利用第三方U32扩展开发菜单来的方便和更具有交互性,这里推荐tMsControls.u32和Budmenu.u32,因为它们是免费的,为什么不用呢J。当然如果你有多余的M的话,注册购买一个ActiveM!.u32也是值得的,支持国产软件嘛。

    其实有编程能力的高手们不妨自己也来开发一个“特色”U32,相关的开发规范可以到Macromedia公司的主页上查找得到。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

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

    驱动号 更多