确定了第一后 接口 至 绘制图形对象 在 JAVA, 我们将实施 发动机动画 这使我们能够管理应用程序的动态和, 后来, 增加用户交互.
该引擎是负责调用鼓励每个数据库的图形对象的功能.
一 游戏引擎 是一个术语,指的一连串的 编程程序 允许 设计, 的创建和代表性 视频游戏.
同样,也有工作在两个游戏机和游戏引擎 操作系统. 游戏引擎的基本功能是用于2D提供了呈现引擎和3ð, 物理引擎 碰撞检测, 声音, 脚本, 动画, 人工智能, 网络, 流, 内存管理和场景图。(该).
我们的第一个引擎实现将依赖于功能我们已经在负责存储和代表性的类: “黑板“. 定义 新界面 增加新的功能, 可能 动画对象.
接口Animable
新 “接口” 宣布将合并实现类的单个方法.
包 图形; 公众 接口 Animable { 公众 无效 灵魂(); }
例如, 我们可以修改我们的图形类的一个动漫, 或创建一个新的扩展的另一种功能, 由于是新的类的情况下 Point2DAnimable 那 扩展的类 的Point2D 存储坐标, 和 实现接口设置动画 鼓励函数只随机改变存储的坐标.
包 图形; 公共类 Point2DAnimable 扩展 的Point2D 器物 Animable{ 公众 Point2DAnimable(诠释 x, 诠释 和){ 非常(x,和); } 公共无效 灵魂() { X =(诠释)(Math.random()*5); 的x =(诠释)(Math.random()*5); 和 =(诠释)(Math.random()*5); 的y =(诠释)(Math.random()*5); } }
添加新的对象存储系统从主黑板类applett
私人无效iniciarElementos() { pizarra.addElement(新Point2DAnimable(50,50)); pizarra.addElement(新的Point2D(70,50)); pizarra.addElement(新的Point2D(50,70)); }
要在数据库中的对象设置动画, 在类中实现板书一个新的方法将分析,如果动画的, 在这种情况下,函数调用本身鼓励每个对象
公共无效灵魂(){ 枚举枚举= bd.elements(); 对象ob; 而(enum.hasMoreElements()){ OB = enum.nextElement(); 如果(OB的instanceof Animable){ ((Animable) 是否).灵魂(); } } }
动画引擎
通过更新动画管理的过程就是我们所说的动画引擎 (构造为螺纹或 “线“). 你的责任是要叫我们在类中实现的动画程序 黑板.
在 操作系统, 一 执行线程, 缕 或线程处理,可以安排由操作系统的最小单位.
线程 (线) 是一项功能,允许应用程序可以一次执行多个任务 (concurrentemente). 各个线程共享一个数字,如存储器空间的资源, 打开文件, 认证情况, 等等. 该技术简化了应用程序的设计必须同时执行不同的功能.
线程是基本上可以在执行其他任务并行执行的任务。(该)
我们的动画引擎实现类 “可运行” 有方法来启动和停止.
包 图形; 公共类 MotorGrafico 器物 可运行 { 长间隔= 100;
我们将有一系列的变量,布尔控件来暂停动画.
boolean parar = false; 公共无效停止() { 停止=真; } 布尔pausado =假; 虚空pausar() { 暂停= !悠闲; }
在类的构造函数将接受一个对象 “黑板” 作为一个参数. 服务知道哪个元件具有键动画的功能. 这个对象将其存储在一个变量以后参考.
私人 格拉夫黑板; 公众 MotorGrafico(格拉夫黑板) { 这.格拉夫格拉夫=; }
开始执行的线程之前,我们必须确保不活跃, 在这种情况下,我们将销毁所有未在同一时间运行任何多个进程.
私人 挥发物 主题信号灯; 公共无效 开始() { 如果(指示符!=零){ 信号灯=零; } 信号灯= 新 线(这); blinker.start(); }
要停止动画引擎破坏线程的执行, 简单地分配一个空值来控制所述可变的 “线”.
公众 无效 停止() { 信号灯= 零; }
在该功能被执行的主要过程 “运行()”.
我们不希望停止执行程序首先检查, 并确认执行的线程是适当的. 如果是这样的话, 暂停程序执行,以毫秒调用 “睡觉” 和, 人reanudarla, 调用动画的方法. 一旦动画图形元素背画 (重绘)
公共无效 运行() { 线 thisThread = 线.currentThread(); 而 (!停止 && 指示符 == thisThread) { 尝试 { thisThread.sleep(间隔); } 抓 (InterruptedException的ê) {} 如果 (算 != 零 && !悠闲) { 赋予生命(); graf.repaint(); } } }
功能 “赋予生命” 它会调用该函数 “灵魂()” 类 “黑板”, 负责存储的图形数据库.
私人无效 赋予生命() { graf.anima(); } }
该方案的实施
示例类应包括对象的声明 “MotorGrafico” 谁将会传递参数来定位图形显示或 “黑板”.
公共类 例1 扩展 Applet的 { 黑板板岩=新 黑板(); MotorGrafico电机=新 MotorGrafico(黑板);
还, 我们通过调用它的方法开始动画引擎 “开始()”
公众 例1() 抛出 HeadlessException的 { 这.的setLayout(新 网格布局()); 这.加(黑板); iniciarElementos(); motor.start(); }
我们只能某些项目添加到动画的图像数据库来完成练习. 我们将会看到,某些点不动, 而实现该接口 “Animable” 如果他们这样做随机.
私人 无效 iniciarElementos() { pizarra.addElement(新 Point2DAnimable(50,50)); pizarra.addElement(新 Point2DAnimable(60,50)); pizarra.addElement(新 Point2DAnimable(50,80)); pizarra.addElement(新 Point2DAnimable(50,70)); pizarra.addElement(新 的Point2D(70,50)); pizarra.addElement(新 的Point2D(50,70)); }
一定是 连接的 发表评论.