对角色进行动画处理
[从 Windows 7 开始,Microsoft 代理已弃用,可能在后续版本的 Windows 中不可用。]
加载字符后,可以使用 Microsoft 代理的几种方法对角色进行动画处理。 使用的第一个通常是 Show 方法。 Show 使角色的帧可见,并播放分配给角色的 “显示” 状态的动画。
角色的帧可见后,可以使用 Play 方法(指定动画的名称)来播放该动画。 动画名称特定于字符定义。 播放动画时,其窗口的形状会发生变化,以匹配帧中的图像。 这将导致可移动的图形图像或 子画面显示在桌面和所有窗口的顶部,或 z 顺序。
如果角色的文件存储在本地,则只需调用 Play 方法即可。 在其他情况下,例如加载 时。HTTP 服务器中的 ACF 字符,必须使用 Get (或 Prepare) 方法来首先检索动画数据。 这将导致 代理从服务器请求动画文件,并将其存储在本地计算机上的浏览器缓冲区中。
Speak 方法使你能够对字符进行编程以说话,并自动对输出进行唇形同步。 本文档的输出部分介绍了更多详细信息。
可以使用 MoveTo 方法将字符定位到新位置。 调用 MoveTo 方法时,Microsoft Agent 会根据角色的当前位置自动播放相应的动画,然后移动角色的帧。 同样,当你调用 GestureAt 时,Microsoft 代理会根据角色的位置和调用中指定的位置播放适当的手势动画。
若要隐藏字符,请调用 Hide 方法。 这会自动播放与角色的 隐藏 状态关联的字符,然后隐藏角色的帧。 但是,也可以通过设置字符的 Visible 属性来隐藏或显示字符。
Microsoft 代理以异步方式处理所有动画调用或 请求。 这使应用程序的代码能够在处理请求时继续处理其他事件。 例如,调用 Play 方法将动画置于字符的队列中,以便可以按顺序播放动画。 但是,这意味着你不能假设对其他函数的调用必须在代码中的动画之后执行。 例如,通常,调用 Play 或 MoveTo 之后的语句将在动画完成之前执行。
可以通过创建对动画请求的对象引用,将代码与字符队列中的动画同步,并在动画开始或完成时监视服务器用于通知客户端字符 的请求 事件。 例如,如果希望在字符完成动画时显示消息框,则可以将消息框调用放在 RequestComplete 事件处理子例程中,检查特定请求 ID。
隐藏角色时,服务器不会播放动画;但是,它仍会排队处理动画请求, (播放动画) 并将请求状态传递回客户端。 在隐藏状态下,字符不能变为输入活动状态。 但是,如果用户在启用语音输入) 时说出字符的名称 (,服务器会自动显示该字符。
当客户端应用程序同时加载多个字符时,Microsoft 代理的动画服务使你能够独立地对字符进行动画处理,或使用 Wait、 Interrupt 或 Stop 方法将其动画彼此同步。
Microsoft 代理还自动为你播放其他动画。 例如,如果角色的状态在几秒钟内未更改,代理将开始播放分配给角色的 闲转 动画的动画。 同样,启用语音输入时,代理将播放角色的 “侦听 ”动画,然后在检测到言语时播放 “听力 ”动画。 这些服务器管理的动画称为 状态,在创建字符时定义。 有关详细信息,请参阅 为 Microsoft 代理设计字符。