gpt4 book ai didi

Android GLSurfaceView.Renderer 正在中断不完整的触摸事件

转载 作者:太空狗 更新时间:2023-10-29 16:24:42 25 4
gpt4 key购买 nike

这个问题我已经有一段时间了,我希望这里有人能够阐明它。

我有一个加载 GLSurfaceView 的 Android 游戏,其渲染器设置如下:

public class GameRenderer implements GLSurfaceView.Renderer
{
public void onSurfaceCreated(GL10 gl, EGLConfig config)
{
BaseLib.init(); // Initializes the native code
}

public void onSurfaceChanged(GL10 gl, int width, int height)
{}

public void onDrawFrame(GL10 gl)
{
BaseLib.render(); // Call to native method to render/update the current frame
}
}

View 是这样的:

public class GameView extends GLSurfaceView implements SurfaceHolder.Callback
{
private GameRenderer _renderer;
private GameListener _listener;

public GameView(Context context)
{
super(context);
this._renderer = new GameRenderer();
setRenderer(this._renderer);
this._listener = new GameListener();
BaseLib.setListener(this._listener);
}

public boolean onTouchEvent(final MotionEvent event)
{
int action = -1;
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN: action = 0; break;
case MotionEvent.ACTION_UP: action = 1; break;
case MotionEvent.ACTION_MOVE: action = 2; break;
}
if(action >= 0)
BaseLib.touch(action, event.getX(), event.getY());

return true;
}
}

我一直在跟踪 native 代码,我注意到在 touch 中途出现问题。事件出现另一个render()正在通话。因为触摸事件还没有完成,它最终会产生一些错误,因为它试图渲染尚未完成加载的对象。

这可能是 native 代码本身的问题,但由于到目前为止我还没有找到问题所在,所以我想问问 Java 代码是否可能会中断对 touch 的调用。并调用另一个 onDrawFrame()在它完成之前。

最佳答案

触摸事件和渲染发生在两个不同的线程上。您必须正确同步您的数据读/写。

关于Android GLSurfaceView.Renderer 正在中断不完整的触摸事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5129580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com