av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

Android讓游戲人物在屏幕上顯示

Java代碼:

成都創(chuàng)新互聯(lián)公司從2013年成立,先為富川等服務(wù)建站,富川等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為富川企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

 
 
 
  1. package eoe.demo;  
  2. import Android.content.Context;  
  3. import android.content.res.Resources;  
  4. import android.graphics.Bitmap;  
  5. import android.graphics.BitmapFactory;  
  6. import android.graphics.Canvas;  
  7. import android.graphics.Color;  
  8. import android.graphics.Paint;  
  9. import android.util.Log;  
  10. import android.view.KeyEvent;  
  11. import android.view.SurfaceHolder;  
  12. import android.view.SurfaceView;  
  13. import android.view.SurfaceHolder.Callback;  
  14. public class MySurfaceView extends SurfaceView implements Callback, Runnable {  
  15. private Thread th = new Thread(this);  
  16. private SurfaceHolder sfh;  
  17. private int SH, SW;  
  18. private Canvas canvas;  
  19. private Paint p;  
  20. private Paint p2;  
  21. private Resources res;  
  22. private Bitmap bmp;  
  23. private int bmp_x = 100, bmp_y = 100;  
  24. private boolean UP, DOWN, LEFT, RIGHT;  
  25. private int animation_up[] = { 3, 4, 5 };  
  26. private int animation_down[] = { 0, 1, 2 };  
  27. private int animation_left[] = { 6, 7, 8 };  
  28. private int animation_right[] = { 9, 10, 11 };  
  29. private int animation_init[] = animation_down;  
  30. private int frame_count;  
  31. public MySurfaceView(Context context) {  
  32. super(context);  
  33. this.setKeepScreenOn(true);  
  34. res = this.getResources();  
  35. bmp = BitmapFactory.decodeResource(res, R.drawable.enemy1);  
  36. sfh = this.getHolder();  
  37. sfh.addCallback(this);  
  38. p = new Paint();  
  39. p.setColor(Color.YELLOW);  
  40. p2 = new Paint();  
  41. p2.setColor(Color.RED);  
  42. p.setAntiAlias(true);  
  43. setFocusable(true); //備注1  
  44. }  
  45. public void surfaceCreated(SurfaceHolder holder) {  
  46. SH = this.getHeight();  
  47. SW = this.getWidth();  
  48. th.start();  
  49. }  
  50. public void draw() {  
  51. canvas = sfh.lockCanvas();  
  52. canvas.drawRect(0, 0, SW, SH, p); //備注2  
  53. canvas.save(); //備注3  
  54. canvas.drawText("Himi", bmp_x-2, bmp_y-10, p2);  
  55. canvas.clipRect(bmp_x, bmp_y, bmp_x + bmp.getWidth() / 13, bmp_y+bmp.getHeight());  
  56. if (animation_init == animation_up) {  
  57. canvas.drawBitmap(bmp, bmp_x - animation_up[frame_count] * (bmp.getWidth() / 13), bmp_y, p);  
  58. } else if (animation_init == animation_down) {  
  59. canvas.drawBitmap(bmp, bmp_x - animation_down[frame_count] * (bmp.getWidth() / 13), bmp_y, p);  
  60. } else if (animation_init == animation_left) {  
  61. canvas.drawBitmap(bmp, bmp_x - animation_left[frame_count] * (bmp.getWidth() / 13), bmp_y, p);  
  62. } else if (animation_init == animation_right) {  
  63. canvas.drawBitmap(bmp, bmp_x - animation_right[frame_count] * (bmp.getWidth() / 13), bmp_y, p);  
  64. }  
  65. canvas.restore(); //備注3  
  66. sfh.unlockCanvasAndPost(canvas);  
  67. }  
  68. public void cycle() {  
  69.      if (DOWN) {  
  70.      bmp_y += 5;  
  71. } else if (UP) {  
  72.     bmp_y -= 5;  
  73. } else if (LEFT) {  
  74.     bmp_x -= 5;  
  75. } else if (RIGHT) {  
  76.     bmp_x += 5;  
  77. }  
  78. if (DOWN || UP || LEFT || RIGHT) {  
  79. if (frame_count < 2) {  
  80. frame_count++;  
  81. } else {  
  82.    frame_count = 0;  
  83. }  
  84. }  
  85. if (DOWN == false && UP == false && LEFT == false && RIGHT == false) {  
  86.     frame_count = 0;  
  87. }  
  88. }  
  89. @Override  
  90. public boolean onKeyDown(int key, KeyEvent event) {  
  91. if (key == KeyEvent.KEYCODE_DPAD_UP) {  
  92. if (UP == false) {  
  93.     animation_init = animation_up;  
  94. }  
  95.   UP = true;  
  96. } else if (key == KeyEvent.KEYCODE_DPAD_DOWN) {  
  97. if (DOWN == false) {  
  98.    animation_init = animation_down;  
  99. }  
  100.    DOWN = true;  
  101. } else if (key == KeyEvent.KEYCODE_DPAD_LEFT) {  
  102. if (LEFT == false) {  
  103.    animation_init = animation_left;  
  104. }  
  105. LEFT = true;  
  106. } else if (key == KeyEvent.KEYCODE_DPAD_RIGHT) {  
  107.  if (RIGHT == false) {  
  108.     animation_init = animation_right;  
  109. }  
  110. RIGHT = true;  
  111. }  
  112. return super.onKeyDown(key, event);  
  113. }  
  114. /* (non-Javadoc)  
  115. * @see android.view.View#onKeyUp(int, android.view.KeyEvent)  
  116. */  
  117. @Override  
  118. public boolean onKeyUp(int keyCode, KeyEvent event) {  
  119. if (DOWN) {  
  120.   DOWN = false;  
  121. } else if (UP) {  
  122.   UP = false;  
  123. } else if (LEFT) {  
  124.   LEFT = false;  
  125. } else if (RIGHT) {  
  126.   RIGHT = false;  
  127. }  
  128. return super.onKeyUp(keyCode, event);  
  129. }  
  130. @Override  
  131. public void run() {  
  132. // TODO Auto-generated method stub  
  133. while (true) {  
  134. draw();  
  135. cycle();  
  136. try {  
  137. Thread.sleep(100);  
  138. } catch (Exception ex) {  
  139. }  
  140. }  
  141. }  
  142. @Override  
  143. public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {  
  144. // TODO Auto-generated method stub  
  145. }  
  146. @Override  
  147. public void surfaceDestroyed(SurfaceHolder holder) {  
  148. // TODO Auto-generated method stub  
  149. }  

備注1 

此方法是用來響應(yīng)按鍵!如果是自己定義一個繼承自View的類,重新實現(xiàn)onKeyDown方法后,只有當(dāng)該View獲得焦點時才會調(diào)用onKeyDown方法,Actvity中的onKeyDown方法是當(dāng)所有控件均沒有處理該按鍵事件時,才會調(diào)用.

備注2

這里也是對屏幕進行刷屏操作,其實這也只是一種,之前文章里我也用到drawRGB的方法同樣實現(xiàn),當(dāng)然也可以用fillRect等來刷屏。

那么這里我想說下,在繼承view中,因為onDraw方法是系統(tǒng)自動調(diào)用的,不像在surfaceview這里這樣去在run里面自己去不斷調(diào)用,在view中我們可以抵用 invalidate()/postInvalidate() 這兩種方法實現(xiàn)讓系統(tǒng)調(diào)用onDraw方法,這里也是和surfaceview中的不同之一!

備注3

這里canvas.save();和canvas.restore();是兩個相互匹配出現(xiàn)的,作用是用來保存畫布的狀態(tài)和取出保存的狀態(tài)的。這里稍微解釋一下,

當(dāng)我們對畫布進行旋轉(zhuǎn),縮放,平移等操作的時候其實我們是想對特定的元素進行操作,比如圖片,一個矩形等,但是當(dāng)你用canvas的方法來進行這些操作的時候,其實是對整個畫布進行了操作,那么之后在畫布上的元素都會受到影響,所以我們在操作之前調(diào)用canvas.save()來保存畫布當(dāng)前的狀態(tài),當(dāng)操作之后取出之前保存過的狀態(tài),這樣就不會對其他的元素進行影響


當(dāng)前名稱:Android讓游戲人物在屏幕上顯示
當(dāng)前URL:http://uogjgqi.cn/article/dpgjgdi.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流