读书频道 > 网站 > 网页设计 > 深入浅出:Windows Phone 8应用开发
8.1.2 MediaElement的状态
13-01-21    奋斗的小年轻
收藏    我要投稿   
本书系统论述了Windows Phone 8操作系统的基本架构、开发方法与开发实践。全书内容共分三篇:开发基础篇、开发技术篇和开发实例篇。开发基础篇包括第1章~第3章,介绍了Windows Phone 8的技术架构及基本特性、...立即去当当网订购

MediaElement的当前状态(Buffering、Closed、Error、Opening、Paused、Playing或Stopped)会影响使用媒体的用户,如果某用户正在尝试查看一个大型视频,则 MediaElement将可能长时间保持在Buffering状态。在这种情况下,可能希望用户界面 (UI) 中提供某种还不能播放媒体的提示。当缓冲完成时,可能希望指示现在可以播放媒体。

表8.4概括了 MediaElement 可以处于的不同状态,这些状态与 MediaElementState 枚举的枚举值相对应。

表8.5概括了这些 MediaElement 状态与在 MediaElement 上采取的操作(如调用 Play 方法、调用 Pause 方法等)。如表8.5所示,可供 MediaElement 使用的状态取决于其当前状态。例如,对于当前处于 Playing 状态的 MediaElement,如果更改了 MediaElement 的源,则状态更改为 Opening; 如果调用了 Play 方法,则没有任何情况发生(无选项); 如果调用了 Pause 方法,则状态更改为 Paused,等。避免“未指定”状态。例如,当媒体处于 Opening 状态时不应调用 Play 方法。为避免发生这种情况,可以在允许调用 Play 之前检查 MediaElement 的 CurrentState。可以通过注册 CurrentStateChanged 事件可以跟踪到媒体的状态变化。CurrentStateChanged 事件可能会没有按预期工作。当状态迅速更改时,事件可能合并到一个事件引发中。例如,CurrentState 属性可能会从 Playing 切换为 Buffering 并很快又切换回 Playing,以致只引发了单个 CurrentStateChanged 事件,在这种情况下,该属性将并不表现为具有已更改的值。此外,应用程序不应采用事件发生的顺序,尤其是针对 Buffering 之类的瞬态。在事件报告中可能会跳过某一瞬态,因为该瞬态发生得太快。

表8.5  MediaElement 状态与在 MediaElement 上采取的操作


状态 源设置 Play() Pause() Stop() Seek() 默认退出条件
Closed (default) Opening 未指定 未指定 未指定 未指定  
Opening Opening(新源) 未指定 未指定 未指定 未指定 如果源有效:Buffering(如果 AutoPlay == true)或 Stopped(如果 AutoPlay == false)(MediaOpened)
如果源无效:Opening (MediaFailed)
Buffering Opening Playing Paused Stopped Buffering(新位置) BufferingTime 到达:Playing
Playing Opening 无选项 Paused Stopped Buffering(新位置) 流结尾:Paused
缓冲区结尾:Buffering
Paused Opening Buffering 无选项 Stopped Paused(新位置)  
Stopped Opening Buffering Paused 无选项 Paused(新位置)  
点击复制链接 与好友分享!回本站首页
分享到: 更多
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.3 功能
下一篇:1.5 小结
相关文章
图文推荐
JavaScript网页动画设
1.9 响应式
1.8 登陆页式
1.7 主题式
排行
热门
文章
下载
读书

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做最好的IT技术学习网站