我的程序出错了。这个错误似乎表明,当我试图在我的绘制序列的末尾解锁时,我的曲面没有被锁定。但如下面的代码所示。我第一件事就是锁住表面。我为什么要犯这个错误。我做错了什么?
给出错误的方法:
错误行'**this.holder.unlockCanvasAndPost(canvas);**‘
public void run() {
while (this.drawFlag) {
Canvas canvas = this.holder.lockCanvas();
canvas.drawColor(Color.rgb(168, 201, 187));
switch (this.sceneFlag) {
case -1:
draw(canvas);
drawHow(canvas);
drawStr(canvas);
break;
case 0:
draw(canvas);
drawStr(canvas);
break;
case 1:
update();
draw(canvas);
if (this.timeAttackFlag && this.optionNum == 0) {
this.sceneFlag = 2;
try {
setScore();
} catch (Exception e) {
}
} else {
this.holder.unlockCanvasAndPost(canvas);
}
break;
case 2:
drawResult(canvas);
break;
}
this.holder.unlockCanvasAndPost(canvas);
try {
TimeUnit.NANOSECONDS.sleep(this.fpsM.state());
} catch (Exception e_2) {
}
}
}逻辑猫:
05-25 19:12:14.091: E/AndroidRuntime(21305): FATAL EXCEPTION: Thread-6886
05-25 19:12:14.091: E/AndroidRuntime(21305): Process: com.gordondev.smackitup, PID: 21305
05-25 19:12:14.091: E/AndroidRuntime(21305): java.lang.IllegalStateException: Surface was not locked
05-25 19:12:14.091: E/AndroidRuntime(21305): at android.view.Surface.unlockCanvasAndPost(Surface.java:268)
05-25 19:12:14.091: E/AndroidRuntime(21305): at android.view.SurfaceView$4.unlockCanvasAndPost(SurfaceView.java:852)
05-25 19:12:14.091: E/AndroidRuntime(21305): at com.gordondev.smackitup.GameView.run(GameView.java:858)
05-25 19:12:14.091: E/AndroidRuntime(21305): at java.lang.Thread.run(Thread.java:841)发布于 2014-05-25 23:40:21
你试图解锁两次。从案例1中删除else块。
https://stackoverflow.com/questions/23860879
复制相似问题