canvas教程

android 游戏 Canvas 常用方法

字号+ 作者:H5之家 来源:H5之家 2016-06-05 17:00 我要评论( )

效果图publicclassMySurfaceViewextendsSurfaceViewimplementsCallback, Runnable {//用于控制SurfaceViewprivate SurfaceHolder sfh;//声明一个画笔private Pai

效果图

android 游戏 Canvas 常用方法

, SurfaceHolder sfh; //声明一个画笔private Paint paint; //声明一条线程private Thread th; flag; //声明一个画布private Canvas canvas; screenW, screenH; //设置画布绘图无锯齿private PaintFlagsDrawFilter pfd = new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); /** * SurfaceView初始化函数 */publicMySurfaceView(Context context) { super(context); //实例SurfaceHolder sfh = this.getHolder(); //为SurfaceView添加状态监听 sfh.addCallback(this); //实例一个画笔 paint = new Paint(); //设置画笔颜色为白色 paint.setColor(Color.WHITE); //设置焦点 setFocusable(true); } /** * SurfaceView视图创建,响应此函数 */(SurfaceHolder holder) { screenW = this.getWidth(); screenH = this.getHeight(); flag = true; //实例线程 th = new Thread(this); //启动线程 th.start(); } /** * 游戏绘图 */() { try { canvas = sfh.lockCanvas(); if (canvas != null) { //----设置画布绘图无锯齿 canvas.setDrawFilter(pfd); //----利用填充画布,刷屏 canvas.drawColor(Color.BLACK); //----绘制文本 canvas.drawText("drawText", 10, 10, paint); //----绘制像素点 canvas.drawPoint(10, 20, paint); //----绘制多个像素点 canvas.drawPoints(newfloat[] { 10, 30, 30, 30 }, paint); //----绘制直线 canvas.drawLine(10, 40, 50, 40, paint); //----绘制多条直线 canvas.drawLines(newfloat[] { 10, 50, 50, 50, 70, 50, 110, 50 }, paint); //----绘制矩形 canvas.drawRect(10, 60, 40, 100, paint); //----绘制矩形2 Rect rect = new Rect(10, 110, 60, 130); canvas.drawRect(rect, paint); canvas.drawRect(rect, paint); //----绘制圆角矩形 RectF rectF = new RectF(10, 140, 60, 170); canvas.drawRoundRect(rectF, 20, 20, paint); //----绘制圆形 canvas.drawCircle(20, 200, 20, paint); //----绘制弧形 canvas.drawArc(new RectF(150, 20, 200, 70), 0, 230, true, paint); //----绘制椭圆 canvas.drawOval(new RectF(150, 80, 180, 100), paint); //----绘制指定路径图形 Path path = new Path(); //设置路径起点 path.moveTo(160, 150); //路线1 path.lineTo(200, 150); //路线2 path.lineTo(180, 200); //路径结束 path.close(); canvas.drawPath(path, paint); //----绘制指定路径图形 Path pathCircle = new Path(); //添加一个圆形的路径 pathCircle.addCircle(130, 260, 20, Path.Direction.CCW); //----绘制带圆形的路径文本 canvas.drawTextOnPath("PathText", pathCircle, 10, 20, paint); } } catch (Exception e) { // TODO: handle exception } finally { if (canvas != null) sfh.unlockCanvasAndPost(canvas); } } /** * 触屏事件监听 */(MotionEvent event) { returntrue; } /** * 按键事件监听 */(int keyCode, KeyEvent event) { returnsuper.onKeyDown(keyCode, event); } /** * 游戏逻辑 */() { } () { while (flag) { long start = System.currentTimeMillis(); myDraw(); logic(); long end = System.currentTimeMillis(); try { if (end - start < 50) { Thread.sleep(50 - (end - start)); } } catch (InterruptedException e) { e.printStackTrace(); } } } /** * SurfaceView视图状态发生改变,响应此函数 */(SurfaceHolder holder, int format, int width, int height) { } /** * SurfaceView视图消亡时,响应此函数 */(SurfaceHolder holder) { flag = false; } }

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • html5canvas核心技术图形、动画与游戏开发源码

    html5canvas核心技术图形、动画与游戏开发源码

    2017-05-02 17:42

  • 打印html5中Canvas的方法

    打印html5中Canvas的方法

    2017-05-01 15:03

  • HTML5+Canvas调用手机拍照功能实现图片上传(下)

    HTML5+Canvas调用手机拍照功能实现图片上传(下)

    2017-04-30 17:00

  • 学习慕课网canvas倒计时实例笔记

    学习慕课网canvas倒计时实例笔记

    2017-04-30 14:01

网友点评
i