文章来源:http://soft.yesky.com/softchannel/72342371961929728/20040820/1844793.shtml
绘 制 动 画 十 分 简 单, 只 需 遵 照 以 下 三 步 即 可;(1) 擦 去 整 个 小 程 序 绘 图 区;(2) 重 画 动 画 背 景;(3) 在 新 的 位 置 绘 制 图 形. 但 是, 当 动 画 连 续 帧 之 间 运 动 与 颜 色 不 连 续 时 就 会 发 生 闪 烁 现 象( 例 子 略). 问 题 出 在 小 程 序 区 的 屏 幕 刷 新 上, 有 两 种 方 法 可 以 防 止 动 画 闪 烁. 第 一 种 方 法 是 只 做 局 部 刷 新, 即 每 次 只 擦 除 改 变 的 部 分. 例 如: 如 果 要 绘 制 一 幅" 飞 行 的 星 空" 动 画, 每 次 刷 新 操 作, 先 擦 去 前 一 位 置 的 星 星, 再 在 新 的 位 置 绘 制 一 个. 但 是, 如 果 动 画 比 较 复 杂, 运 动 部 分 重 叠 较 多, 则 局 部 刷 新 操 作 很 繁 琐 也 影 响 程 序 运 行 速 度. 在 这 种 情 况 下, 可 以 用 另 外 一 种 方 法( 双 缓 存) 来 解 决 闪 烁 问 题. 它 的 核 心 思 想 是 在 屏 幕 外 完 成 一 帧 的 全 部 动 画, 然 后 把 最 后 绘 制 完 的 帧 显 示 在 小 程 序 屏 幕 上. 过 程 如 图3 所 示. 【程序编程相关:Windows xp sp2工作站间DC】 【推荐阅读:用C实现直线和圆的bressham算法】示 例 程 序 如 下: 【扩展信息:Programming MS Offic】
import java.awt.*;
public class ball extends multithreadapplet { image ball=null; image applet=null; graphics appletg,ballg; public void run( ){ if(ball= =null){ applet=createlmage(bounds( ).width,bounds( ). height); ball=create image(70,70); appletg=applet.getgraphics( ); ballg=ball.getgraphics( ); ballg.setcolor(color.gray); ballg.draworal(0,0,70,70); { ... 下一页