在子线程里面高刷调用canvas.drawPixelMapHolderRect;画图,然后模拟机闪退,请请帮帮忙怎么弄?
@Override
public void run() {
isFirstRun = true;
init();
while (isRunning) {
//游戏暂停
// if (!isPause()) {
// myLogic();
// }
long startTime = System.currentTimeMillis();
myDraw();
long endTime = System.currentTimeMillis();
long time = endTime - startTime;
if (time < 1000/35) {
try {
Thread.sleep(1000/35 - time);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//刷新UI
TaskDispatcher uiTaskDispatcher = context.getUITaskDispatcher();
uiTaskDispatcher.asyncDispatch(() -> this.invalidate());
}
}
myDraw
//画出游戏界面
private void myDraw() {
try {
tiledLayer_cover.draw(lockCanvas);
tiledLayer_peng01.draw(lockCanvas);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (lockCanvas != null){
// holder.unlockCanvasAndPost(lockCanvas);
}
}
}
draw
public void draw(Canvas canvas) {
for (int i = 0; i < getRows(); i++) {
for (int j = 0; j < getCols(); j++) {
int tiledIndex = getTiledCell(j,i);
if (tiledIndex == 0) {
continue;
}
int x = mTiledX[tiledIndex];
int y = mTiledY[tiledIndex];
int ix = getX() + j * getWidth();
int iy = getY() + i * getHeight();
mSrc = new RectFloat(x, y, x + getWidth(), y + getHeight());
mDest = new RectFloat(ix,iy , ix+getWidth(), iy + getHeight());
canvas.drawPixelMapHolderRect(mBitmap,mSrc,mDest,paint);
}
}
}
鸿蒙
线程
画图
赞
收藏 0
回答 1
待解决
相关问题
Text实现scroll效果怎么弄?
2094浏览 • 1回复 待解决
HarmonyOS编程如何获取手机信息的基站小区Cell值,麻烦帮帮忙!谢谢
3099浏览 • 1回复 已解决
Mysql 同时修改多个库的数据怎么弄?
393浏览 • 1回复 待解决
ability被异常杀后数据保留怎么弄?
2280浏览 • 1回复 待解决
主线程怎么才能判断子线程是否已经执行结束了
3659浏览 • 1回复 待解决
eTS什么时候能进行远程模拟机的调试?
1878浏览 • 2回复 已解决
打开图库应用时偶尔会闪退
184浏览 • 0回复 待解决
hpm下载库出错,不能下载,请指点
3462浏览 • 1回复 待解决
添加了个button按钮事件,运行程序时候,在远程真机点击按钮,然后真机会闪退回桌面怎么回事?
2231浏览 • 2回复 待解决
鸿蒙js开发 文件交互Api 闪退
3461浏览 • 2回复 待解决
荣耀50手机可以刷鸿蒙系统吗?怎么刷?
23750浏览 • 2回复 待解决
canvas在api5手机不显示,api6手机正常,这怎么解决?
455浏览 • 1回复 待解决
华为LiteWearable里面的canvas不能用,那怎么绘图呢
4203浏览 • 2回复 待解决
使用document类下的document.choose(),选择文件闪退 的问题?
2670浏览 • 2回复 待解决
鸿蒙js 捕获事件绑定 无法触发,请大神赐教!
4478浏览 • 2回复 待解决
在DevEco Studio里面可以同时跑2个本地模拟器吗
2420浏览 • 1回复 待解决
什么时候能有个OHM刷机包?
1244浏览 • 1回复 待解决
JS UI框架中canvas如何动态指定宽高
3665浏览 • 1回复 待解决
开源鸿蒙中 ets子组件调用父组件中的方法?
728浏览 • 1回复 待解决
[救命啊]鸿蒙sdk6升级后真机,模拟机都无法调试,请问是不是手表鸿蒙系统还没有升级到6啊
4559浏览 • 1回复 待解决
真机和模拟器安装失败
8081浏览 • 2回复 待解决
请确定文件名是否确定后,再试一次
14144浏览 • 1回复 待解决
在弹窗中显示高德地图,发现为什么地图里面的内容跑到上面去了?
2790浏览 • 2回复 待解决
js 怎么开启异步线程?
3080浏览 • 1回复 待解决
APP闪,你可以先把run()方法里面的myDraw()先注释掉,真机调试重启,如果仍出现APP闪退,则说明你的run()方法的代码有问题。 如果注释掉myDraw()方法没有出现APP的闪退,那下一步就要查看myDraw()方法中的代码。