【问题标题】:Android OpenGL game code execution [closed]Android OpenGL游戏代码执行[关闭]
【发布时间】:2013-11-07 18:43:09
【问题描述】:

我正在android 中使用OpenGL ES 1.0 开发纸牌游戏。我有两个类,GameRenderer 和GameLogic。当我将卡片交给 GameLogic 中的玩家时,我在 GameLogic 中设置了 onDrawFrame 用于动画的变量。所以,我需要停止 GameLogic 中的代码,直到动画完成。这就是问题所在。。如何停止代码执行?

【问题讨论】:

  • 供将来参考:OpenGL 1.0 是完全不同的东西,它已有 20 多年的历史,没有人使用它!您正在使用 OpenGL ES 1.0

标签: android opengl-es


【解决方案1】:

听起来您需要重新构建应用程序的架构。您需要让 GameLogic 类修改某种 GameData 对象,而不是从 GameLogic 类中读取数据。将数据保存在 GameData 对象中后,您可以让它向您的 GameRenderer 发送通知或消息,说明数据已更改。然后 GameRenderer 可以读取新数据并采取相应措施。

这是一种标准设计模式,称为Model View Controller

【讨论】:

  • 谢谢。。在 GameLogic 中有 GameRender 用来更新屏幕的数据。所以,当我调用我的函数将卡片交给玩家时,我需要先做动画,然后更新屏幕数据..
  • 你的问题很难回答,因为细节太少(这就是为什么它被几个人否决了)。此外,这个论坛不是一个很好的询问架构/设计风格问题的论坛。如果您发布了一个非常冗长的问题,详细说明您正在尝试做什么(您是在做标准的纸牌游戏,还是战斗纸牌游戏,还是其他什么?),并且有为您试图获得答案的部分编码 sn-ps。事实上,我只能说做更多的研究。
  • 问题是我需要在更新游戏数据的指令之前做动画。在测试动画(多少卡,...)之后,如果我使用 Thread.sleep,主要活动停止opengl 渲染也是如此..
  • 用一个新线程解决了!也就是说,我有一个 GameRender 和一个 GameLogic。在 GameLogic 中使用 Thread.sleep 等待 OpenGL 动画,所有游戏都锁定。为了避免这种情况,带有动画和等待的游戏代码在一个新线程中开始,因此我可以使用 thread.sleep 直到动画结束(使用布尔值作为标志)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-10
  • 2011-06-01
  • 2014-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多