我现在几乎完成了我的游戏,但今天我遇到了一个真正令人讨厌的问题.当我开始游戏并等待几分钟时,程序会自动关闭.而且我没有说明它.
01-22 16:20:31.232: DEBUG/szipinf(333): Initializing inflate state 01-22 16:20:31.563: DEBUG/PhoneWindow(333): couldn't save which view has focus because the focused view com.JDLApps.Snake.FrameWork.AndroidFastRenderView@4050f950 has no id. 01-22 16:20:36.362: WARN/ActivityManager(73): Activity pause timeout for HistoryRecord{406532f8 com.JDL.Apps.Snake/.SnakeGame} 01-22 16:20:43.682: INFO/ActivityManager(73): Start proc com.android.launcher for activity com.android.launcher/com.android.launcher2.Launcher: pid=358 uid=10026 gids={} 01-22 16:21:20.393: ERROR/InputDispatcher(73): channel '406762c0 com.JDL.Apps.Snake/com.JDL.Apps.Snake.SnakeGame (server)' ~ Consumer closed input channel or an error occurred. events=0x8 01-22 16:21:20.402: ERROR/InputDispatcher(73): channel '406762c0 com.JDL.Apps.Snake/com.JDL.Apps.Snake.SnakeGame (server)' ~ Channel is unrecoverably broken and will be disposed! 01-22 16:21:21.092: INFO/WindowManager(73): WIN DEATH: Window{406762c0 com.JDL.Apps.Snake/com.JDL.Apps.Snake.SnakeGame paused=false} 01-22 16:21:21.142: WARN/ActivityManager(73): Timeout of broadcast BroadcastRecord{40728640 android.intent.action.TIME_TICK} - receiver=android.app.LoadedApk$ReceiverDispatcher$InnerReceiver@406300f8,started 56630ms ago 01-22 16:21:21.142: WARN/ActivityManager(73): Receiver during timeout: BroadcastFilter{4062f930 ReceiverList{4062f8b8 73 system/1000 local:406300f8}} 01-22 16:21:21.172: INFO/ActivityManager(73): Process com.JDL.Apps.Snake (pid 333) has died. 01-22 16:21:21.362: INFO/WindowManager(73): WIN DEATH: Window{4072b188 SurfaceView paused=false} 01-22 16:21:21.443: INFO/ActivityManager(73): Low Memory: No more background processes.
编辑:绘图代码:
@Override public void screen(float deltaTime) { Graphics g = app.getGraphics(); g.drawPixmap(Assets.background,0); g.drawPixmap(Assets.facebook,750,20); g.drawText("SNAKE",10,150,Color.BLACK,AndroidGraphics.LEFT,null,0); g.drawText("START",g.getWidth() / 2,g.getHeight() - 20,120,AndroidGraphics.CENTER,startRec,0); g.drawText("HIGHscore",20,275,50,highRec,0); g.drawText("MORE APPS",g.getWidth() - 20,AndroidGraphics.RIGHT,moreRec,0); if (Settings.soundEnabled) g.drawPixmap(Assets.buttons,new Rect(0,100,100),380,480)); else g.drawPixmap(Assets.buttons,new Rect(100,200,new Rect( 0,480)); }
drawText方法:
@Override public void drawText(String text,int x,int y,int color,int size,int position,Rect bounds,int rotation) { if (position == LEFT) paint.setTextAlign(Paint.Align.LEFT); else if (position == CENTER) paint.setTextAlign(Paint.Align.CENTER); else if (position == RIGHT) paint.setTextAlign(Paint.Align.RIGHT); else return; paint.setColor(color); Typeface typeface = Typeface.createFromAsset(assets,"typewrite.TTF"); paint.setTypeface(typeface); paint.setTextSize(size); if (bounds != null) { Rect rec = new Rect(); paint.getTextBounds(text,text.length(),rec); bounds.bottom = y; bounds.top = y - rec.height(); if (position == CENTER) { bounds.left = x - rec.width() / 2; bounds.right = x + rec.width() / 2; } else if (position == RIGHT) { bounds.left = x - rec.width(); bounds.right = x; } else if (position == LEFT) { bounds.left = x; bounds.right = x + rec.width(); } else return; } canvas.save(); canvas.rotate(rotation,x,y); canvas.drawText(text,y,paint); canvas.restore(); }