| 域名空间 下载中心 社区论坛 信息公告 my小屋 |
![]() |
联系我们 设为首页 加入收藏 |
|
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿 论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图 专题 | 应用软件 | 聊天通讯 | q q 专栏 | 建站经验 | 在线工具 | 站长club | 注 册 表 | 旧版 社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务 |
| 新版上线![旧版] | |||||
注:打开慢时请稍等
shockwave 预载技术(3)http://www.iyit.net 日期:2006-5-29 8:55:48 来源:网络转载 点击: |
原著:lingoworkshop 翻译:alphachi 第二部分:进度条组件 在上一部分,我们创建了一个“preloader”父代剧本用来:(1)预载一个url;(2)当预载完成时发送一个消息;(3)预载进行时发送“状况”消息。在这一部分,我们将创建一个可以显示当前状况(例如预载完成的百分比)的进度条。 创建进度条有很多种方法。我们可以使用flash角色、可拉伸的图形角色、普通的文本角色以及像os controls这样的xtras提供的相关组件等,不过在这里,我们选择了imaging lingo。无论使用何种方法,剧本自身都应该能够对下列消息做出响应:(a)等待连接到服务器时发送的mshowworking消息;(b)知道预载已经完成多少时发送的mshowprogress消息(是一个数值)。 当我们将mshowworking消息发送给下面的剧本时,一个简单的动画将被绘制到舞台上。当我们发送mshowprogress消息时,这个动画将被一个简单的进度条替换。 simple progress bar (v.1) -- 声明属性变量 property mycolour, mycolour2 property mycanvas, myscreenrect, mybuffer, mybufferrect property mystep, mysegmentsize on beginsprite me thissprite = sprite ( me . spritenum ) -- 确定绘制范围 myscreenrect = thissprite. rect -- 对输出图像进行引用 mycanvas = ( the stage ). image -- 创建图像缓冲 mybuffer = image (myscreenrect. width , myscreenrect. height , 24 ) mybuffer. copypixels (mycanvas, mybuffer. rect , myscreenrect) -- 存储rect以便稍后使用 mybufferrect = mybuffer. rect -- 建立动画运行参数 mystep = 0 mysegmentsize = mybuffer. height - 4 -- 控制其他的角色 sendallsprites ( # mregisterwidget, me , # progressbar) end on mshowprogress ( me , amt) -- 确保amt在0和1.0之间 amt = min ( 1 . 0 , max ( 0 , amt)) -- 复制缓冲 buffer = mybuffer. duplicate () -- 绘制边界 buffer. draw (mybufferrect, [ # shapetype: #rect , # color: mycolour]) -- 计算基于显示数量的填充rect progressbarrect = rect ( 2 , 2 , (mybufferrect. width - 2 )*amt, mybufferrect. height - 2 ) -- 填充进度条rect buffer. fill (progressbarrect, mycolour) -- 将运行结果复制到舞台上 mycanvas. copypixels (buffer, myscreenrect, mybufferrect) end on mshowworking ( me ) -- 复制缓冲 buffer = mybuffer. duplicate () -- 绘制边界 buffer. draw (mybufferrect, [ # shapetype: #rect , # color: mycolour]) -- 给属性变量mystep加1,以便单独移动stripes mystep = mystep + 1 -- 如果绘制部分过大则进行重设 if mystep > 0 then mystep = -mysegmentsize -- 创建临时图像 innerrect = buffer. rect . inflate (- 2 ,- 2 ) innerimage = image (innerrect. width , innerrect. height , 24 ) innerimage. fill (innerimage. rect , mycolour) -- 绘制stripes l = mystep repeat while true drect = rect (l, 0 , l + mysegmentsize, mysegmentsize+ 2 ) innerimage. draw ( point (l, 0 ), point ( l + mysegmentsize, mysegmentsize), [ # shapetype: #line , # linesize: 1 , # color: mycolour2, # ink: 2 ]) l = l + mysegmentsize if l > buffer. width then exit repeat end repeat -- 向缓冲中添加内容 buffer. copypixels (innerimage, innerrect, innerimage. rect ) -- 将运行结果复制到舞台上 mycanvas. copypixels (buffer, myscreenrect, mybufferrect) end on getpropertydescriptionlist ( me ) pdlist = [:] pdlist[ # mycolour] = [ # comment: "bar colour" , # format: #color , # default: rgb ( 68 , 68 , 68 )] pdlist[ # mycolour2] = [ # comment: "stripe colour " , # format: #color , # default: rgb ( 255 , 255 , 255 )] return pdlist end 这个简单的进度条行为本身唯一的作用只是对mshowworking和mshowprogress消息做出响应,而当beginsprite事件发生时,它又会发出一个mregisterwidget消息,这样做的目的是让别的对象能够获得对其的引用(作为参数和mregisterwidget消息同时被发送的“me”引用)。这些对象需要此引用以便进行反馈工作,当然,也可以使用sendsprite和sendallsprite命令实现这一点。 编辑:黑鹰 [发送给好友] [打印本页] [关闭窗口] [返回顶部] 上一篇:director 影片剧本、父代剧本与行为 下一篇:shockwave 预载技术(2) 转载请注明来源:www.iyit.net 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。 |
| 相关文章 | ||||
| 友情链接 | ||||||
| 设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接 |
| |||||||