出于某种原因,当我在屏幕上(在模拟器上)移动鼠标时,我的FPS会大幅跳跃,同时按住鼠标左键.通常我的游戏非常迟钝,但如果我触摸屏幕(只要我在触摸时移动鼠标)它就会非常平滑.
我已经尝试在onTouchEvent中休眠20ms,但它似乎没有任何区别.
这是我在onTouchEvent中使用的代码:
// events when touching the screen
public boolean onTouchEvent(MotionEvent event)
{
int eventaction = event.getAction();
touchX=event.getX();
touchY=event.getY();
switch (eventaction)
{
case MotionEvent.ACTION_DOWN:
{
touch=true;
}
break;
case MotionEvent.ACTION_MOVE:
{
}
break;
case MotionEvent.ACTION_UP:
{
touch=false;
}
break;
}
/*try
{
AscentThread.sleep(20);
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}*/
return true;
}
Run Code Online (Sandbox Code Playgroud)
在logcat日志中,FPS是当前fps(最后20帧的平均值),触摸是否正在触摸屏幕(来自onTouchEvent).
到底是怎么回事?以前有没有其他人有这种奇怪的行为?
Logcat日志:
12-21 19:43:26.154: INFO/myActivity(786): FPS: 31.686569159606414 Touch: false
12-21 19:43:27.624: INFO/myActivity(786): FPS: 19.46310293212206 Touch: false
12-21 19:43:29.104: INFO/myActivity(786): FPS: …Run Code Online (Sandbox Code Playgroud) 我将我的游戏基于农场的例子,并且自从我第一次开始制作它以来一直存在口吃问题.我没有尝试过任何东西已经摆脱它们所以我已经达到了我花了几个小时创建一个简化版的lunarlander示例,然后放入一个简单的滚动图像来显示口吃的地步.注意:它与垃圾收集器无关.如果您认为是这样,只需查看日志,垃圾收集器就会在出现断断续续的时间点附近运行.
向下滚动屏幕的图像大约每秒钟在我的手机上大约1/10秒钟停顿(Motorola Milestone,2.2).这种口吃并不能完全摧毁游戏玩法,但却令人分心,令人沮丧.我的游戏还涉及很多快速滚动和快速移动,所以它通常更明显.
如果你有任何人有时间,你可以快速看看这个日食项目,看看是否:
我希望我只是有一个延迟的代码行,导致整个事情没有我意识到.我无法相信即使在剥离了这么多之后它仍然具有与我的完整游戏1000个对象完全相同的口吃,特别是因为它在我的手机上以稳定的60fps运行.
编辑:在Traceview上描述了我的游戏,看起来很好.
我在Django Rest框架中进行了分页,看起来速度非常慢.Count看起来像罪魁祸首,由于表中数百万行,每次返回都要花费数百毫秒.
我使用postgresql作为数据库.有没有办法不计算行数仍然使用分页?如果我手动过滤了查询集,则在启用此功能之前性能很好.
在过去6个月左右的时间里,我一直在开发Android游戏,并且已经多次在这里发布了关于我无法摆脱的各种滞后问题.
我最终抓住LunarLander示例并将其剥离到其核心组件,看看我是否可以做任何不滞后的事情.它真正做的就是改变画布每帧翻译的数量,然后在画布上绘制背景.即使这样,就像SurfaceView应用程序一样简单 - 口吃......
我的游戏是一个滚动游戏,你不断向上移动屏幕(想想一个飞行游戏),但我目前正在做背景的方式导致每隔一秒左右持续口吃大约50-100ms.这不是游戏破坏,但它非常分散注意力,使游戏看起来好像是由一个完整的白痴编程(虽然我开始怀疑这可能是这种情况).
不,它不是垃圾收集器,在游戏运行循环期间根本没有创建新对象,并且在游戏运行时GC几乎没有运行.
我几乎是在沮丧地撕扯我的头发.我花了40多个小时试图摆脱这个简单的应用程序示例在过去一周的滞后,这让我发疯.一个简单的应用程序如何与我链接的应用程序可能存在延迟问题?你不会认为滚动背景会比那简单得多......
注意:此演示不断在我的手机上获得大约60fps(摩托罗拉里程碑).取消注释示例中的FPS代码以查看FPS.
TL; DR:非常简单的程序,只是一个滚动的背景显示口吃.请看一看...
链接下载基于LunarLander示例的简单口吃示例:http://dl.dropbox.com/u/4972001/LunarLander.rar
我正在考虑创建一个基于 django 的网站,该网站将包含一些极其不同类型的部分。我的想法是,这些应该是单独的应用程序,但是我希望它们能够被带到不同的项目中。
我将拥有一个从数据库创建的主菜单系统。我希望网站的所有这些不同部分都位于此主菜单系统下,因此具有标准标题。
大多数在线示例似乎都说您应该使用菜单创建一个 base.html 模板,然后让其他所有内容继承该模板。我的问题是,就应用程序而言,这似乎不太便携。我必须让所有模板继承自base.html,我认为这会降低它们的可移植性?
我想我要问的是:
在 django 中跨多个独立应用程序创建持久主菜单系统的最佳方法是什么?
例如,如果您采用模型:
class Region(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=256)
class Company(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=256)
region = models.ForeignKey('Region', db_index=True)
class Staff(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=256)
company = models.ForeignKey('Company', db_index=True)
Run Code Online (Sandbox Code Playgroud)
我知道我不需要在这些模型中包含 id,但我这样做是为了让它更清楚。
在此示例中,有时您只想返回一个 Region 列表。其他时候,您希望返回区域列表,其中包含每个区域下每个区域的公司列表。
我想,您还需要更多详细信息,其中包含区域列表、它们的公司子级以及每个公司的员工子级。
就其余框架视图而言,处理这些不同级别的深度/细节的最佳方法是什么。人们通常如何处理这种情况?
我的意思是,当你说三个视图在顶层返回相同的东西时,你会使用什么样的命名约定,唯一的区别是它们包含多少级嵌套?