在PB应用中实现声音与动画

在PB应用中实现声音与动画
---- 在 设 计 应 用 程 序 过 程 中, 恰 当 地 应 用 电 脑 声 音 与 动画 技 术, 可 以 为 用 户 提 供 更 加 直 观、友 好、 引 人 注 目 的 操 作 界 面。 下 面 笔 者 介 绍 一 下 在PowerBuild 应 用 中 实 现 声 音 与 动 画 的 一 种 简 便 方 法:
1.作 为 举 例, 创 建 一 个MDI 风 格 的 窗 口w_audani。 在 这 个 窗口 上 放 置 一 个 含 声 音、 动 画 两 个 带 图 标 的 菜 单 项 的 菜单m_audani, 一 个 图 象 框p_1。 整 个 窗 口 的 外 观 如 下:
2.制 备 声 音 和 图 象 文 件。 本 例 中 选 用 了 一 个adu.wav 的 声音 文 件 和 四 个ani1.bmp、ani2.bmp 、ani3.bmp、ani4.bmp 用 于 动 画 素 材 的 分 离 图 象 文 件。
3.定 义 程 序 编 制 中 要 用 到 的 变 量: (1) 定 义 一 个 整 型 实 例 变 量, 用 作 图 象 计 数 integer picturenub (2) 定 义 一 个 外 部 函 数, 使 在PowerBuild 编 程 中 可 以 调 用Windows 32-bit API 声 音 播 放 函 数
function boolean sndplaysounda
(string soundname, uint flags) &
library "winmm.dll"
4.为 窗 口w_audani 编 制 事 件 处 理 程 序。 程 序 行 中// 后 的 为说 明 文 字。
(1) 在 窗 口 的 打 开(Open) 事 件 下 输 入 程 序:
//声音菜单项置选中属性
m_audani.m_1.m_aud.checked = true
//动画菜单项置选中属性
m_audani.m_1.m_ani.checked = true
//图象计数器置初值
picturenub = 1
//定义每隔半秒钟触发一次窗口的timer事件
timer(0.5,this)
---- (2) 在 窗 口 的 计 时 器(Timer) 事 件 下 输 入 程 序:
---- // 如 果 声 音 菜 单 项 被 选 中, 则 调 用Windows 32-bit API 声 音 播 放 函 数 播 放 声 音 文 件。 函 数 第 一 个 参 数 指 出 要 播 放 的 声 音 文 件 名, 第 二 个 指 出 函 数 播 放 属 性, 属 性3 为 异 步、 不 缺 省
IF m_audani.m_1.m_aud.checked = true THEN
sndplaysounda("aud.wav",3)
END IF
//如果动画菜单项被选中,则播放动画
IF m_audani.m_1.m_ani.checked = true THEN
CHOOSE CASE picturenub
//当图象计数为1时,播放第1张图象
CASE 1
p_1.picturename = "ani1.bmp"
//当图象计数为2时,播放第2张图象
CASE 2
p_1.picturename = "ani2.bmp"
//当图象计数为3时,播放第3张图象
CASE 3
p_1.picturename = "ani3.bmp"
//当图象计数为4时,播放第4张图象
CASE 4
p_1.picturename = "ani4.bmp"
//恢复图象计数
picturenub = 0
END CHOOSE
//图象计数增1
picturenub ++
END IF
5.为 菜 单m_audani 编 制 事 件 处 理 程 序:
(1) 在 菜 单 项 声 音(m_aud) 的 单 击(Clicked) 事 件 下 输 入 程 序:
// 使 该 菜 单 项 的 选 中 属 性 反 转 起 到 开 关 的 作 用, 即 原 来为 选 中 的 变 为 不 选 中, 未 选 中 的 则 现 在 变 成 选 中
this.checked = not this.checked
(2) 在 菜 单 项 动 画(m_ani) 的 单 击(Clicked) 事 件 下 输 入 程 序:
//同样,使该菜单项的选中属性反转
this.checked = not this.checked
6.执 行 该 程 序 的 大 致 情 况 是:
(1) 启 动 程 序 后, 自 动 打 开 以 上 图 示 的 窗 口;
(2) 窗 口 计 时 器 按 每 半 秒 钟 触 发 一 次 事 件 处 理 程 序, 播 放 声 音 和 图 象 文 件, 周 而 复 始 以 产 生 动 画 效 果;
(3) 单 击 声 音 或 动 画 菜 单 项( 工 具 图 标), 可 以 控 制 声 音 或 动 画 是 否 播 放。

<script>document.write(" ");</script>
阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
pb实现socket是一种通过Protocol Buffers(简称pb)协议来实现的网络通信方式。Protocol Buffers是一种轻量级、高效的数据交换格式,可以用于结构化数据的序列化和反序列化。 针对pb实现的Socket通信,首先需要定义好通信协议。这包括在pb定义好需要交换的数据结构以及相应的字段和类型。可以使用pb的语言定义文件(如.proto文件)来描述这些信息。 接下来,需要使用pb的编译器将.proto文件编译成对应的代码文件,这些代码文件将包含pb相关的类和方法。 在编写pb实现Socket的代码时,需要在发送数据的一端将数据结构序列化为pb的二进制格式,并通过Socket发送给接收数据的一端。在接收数据的一端,通过Socket接收到数据后,需要将接收到的二进制数据反序列化为对应的数据结构。 在实际应用,可使用各种编程语言提供的pb库来实现pb的序列化和反序列化操作。同时,也需要使用Socket编程相关的库或API来进行Socket通信操作。 pb实现Socket的优点是数据传输效率高,可跨平台使用,且可以使用不同语言来实现不同端的通信。缺点是对于较为简单的通信需求,pb的使用可能会显得繁琐,且在数据结构变动较大时,可能需要重新编译生成代码。 总结来说,pb实现Socket是一种高效、灵活的网络通信方式,可以通过定义好的pb协议和相应的代码实现数据的序列化和反序列化,在Socket通信进行数据的传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pmwb

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值