快速业务通道

Java:在二维动画中使用基于图像的路径 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
anager.STATE_NONE &&              manager.stateAt(x + 1, y) !=              BuildingManager.STATE_UNKNOWN) {              setDirection(Person.DIR_EAST);             x += 1;            }           else {              // Only direction not checked is south              setDirection(Person.DIR_WEST);             x -= 1;           }         }       }        setNextPoint(new Point(x, y));   } }

Java:在二维动画中使用基于图像的路径(6)

时间:2011-08-31 IBM

这个相当复杂的方法主要是检查当前位置的映射。然后选择要去的最佳位置。 它试图尽可能地沿同一个方向走。注意 hints是标志,提供了优先选择的方向。 它们通常用于开始位置和交叉路口。

Person 可以过早地(也就是在达到路径终点之前)停止,也可以设定为经过 固定的时间后才开始移动。 Person 对象还可以留下逐渐消失的图像痕迹(或者 历史)以描绘出它们的运动,如图 6 所示。

图 6. 一个带有历史痕迹的 person 移动

Java:在二维动画中使用基于图像的路径 - 编程入门网

每个人都有机会

清单 5 显示了用于移动实体的逻辑。这个过程在每个动画周期中执行一次。

清单 5. 移动所有实体

/** Move the entities around the pattern */ public void moveEntities() {   // update (move) the people   for (Iterator iter = people.iterator(); iter.hasNext();) {      Object next = iter.next();     if (next instanceof Person) {       ((Person)next).updateTick();     }   }    // update the other entities   for (Iterator iter = entities.iterator(); iter.hasNext();) {     Object next = iter.next();     if (next instanceof Entity) {        ((Entity)next).updateTick();     }   } }

Java:在二维动画中使用基于图像的路径(7)

时间:2011-08-31 IBM

动画中的每个新帧(frame)都是由清单 6 所显示的过程创建的。注意实体将 它们自己添加到帧中。

清单 6. 在当前位置添加实体

/** Advance the animation */ public void prepareNextFrame (boolean update, boolean shared) {   setBackground (Color.black);   if (update) {     manager.moveEntities ();   }   mainPanel.setBounds(getBounds());    mainPanel.removeAll();   // add the people   for (Iterator iter = manager.getPeople().iterator();      iter.hasNext();) {     Person person = (Person)iter.next();      person.addToPanel(mainPanel, shared);   }   // add the entities   for (Iterator iter = manager.getEntities().iterator ();      iter.hasNext();) {     Entity entity = (Entity) iter.next();     entity.addToPanel(mainPanel, shared);   } }

Java:在二维动画中使用基于图像的路径(8)

时间:2011-08-31 IBM

我们用清单 7 中的代码实现连续的动画。 delay 值控制动画运行的快慢以及 它占用 CPU 时间的多少。

清单 7. 动画周期

public void runUpdates(int delay) {   TimerTask task = new TimerTask() {     public void run() {        SwingUtilities.invokeLater(new Runnable() {            public void run() {             prepareNextFrame();             repaint();             if (manager.get

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号