正在做一个游戏,其中要用到用手滑动一个路线,手抬起后,人物图片按此路线移动过去。请大家提供点思路、、、
2条回答 默认 最新
- laopeng301 2011-08-22 21:11关注
[url]http://www.yoooo.org/?p=58[/url] :lol:
这个非常的不错啊····
[code="java"] class CustomView1 extends View {private Paint paint; private ArrayList<POINTF> graphics = new ArrayList<POINTF>(); private Paint lPaint; private Path mPath; private int of = 0; private Boolean over = false; private float mX, mY; private static final float TOUCH_TOLERANCE = 4; public CustomView1(Context context) { super(context); paint = new Paint(Paint.ANTI_ALIAS_FLAG); paint.setColor(Color.RED); paint.setStrokeJoin(Paint.Join.ROUND); paint.setStrokeCap(Paint.Cap.ROUND); paint.setStrokeWidth(65); lPaint = new Paint(Paint.ANTI_ALIAS_FLAG); lPaint.setColor(Color.BLACK); lPaint.setStyle(Paint.Style.STROKE);// 空心 lPaint.setStrokeJoin(Paint.Join.ROUND); lPaint.setStrokeCap(Paint.Cap.ROUND); lPaint.setStrokeWidth(5); mPath = new Path(); } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: over = false; graphics.clear(); of = 0; graphics.add(new PointF(x, y)); touch_start(x, y); invalidate(); break; case MotionEvent.ACTION_MOVE: graphics.add(new PointF(x, y)); touch_move(x, y); invalidate(); break; case MotionEvent.ACTION_UP: over = true; touch_up(); invalidate(); break; } return true; } private void touch_start(float x, float y) { mPath.reset(); mPath.moveTo(x, y); mX = x; mY = y; } private void touch_move(float x, float y) { float dx = Math.abs(x - mX); float dy = Math.abs(y - mY); if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) { mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2); mX = x; mY = y; } } private void touch_up() { mPath.lineTo(mX, mY); } @Override protected void onDraw(Canvas canvas) { // canvas.drawColor(Color.TRANSPARENT,Mode.CLEAR); canvas.drawColor(Color.WHITE);// 清理 canvas.drawPath(mPath, lPaint); if (over && graphics.size() > 0) { canvas.drawPoint(graphics.get(of).x, graphics.get(of).y, paint); of += 1; if (of < graphics.size()) { if (of == graphics.size() - 1) { mPath.reset();// 移动完成后移除线条 } invalidate(); } } } }[/code]
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于用pyqt6的项目开发该怎么把前段后端和业务层分离
- ¥30 线性代数的问题,我真的忘了线代的知识了
- ¥15 有谁能够把华为matebook e 高通骁龙850刷成安卓系统,或者安装安卓系统
- ¥188 需要修改一个工具,懂得汇编的人来。
- ¥15 livecharts wpf piechart 属性
- ¥20 数学建模,尽量用matlab回答,论文格式
- ¥15 昨天挂载了一下u盘,然后拔了
- ¥30 win from 窗口最大最小化,控件放大缩小,闪烁问题
- ¥20 易康econgnition精度验证
- ¥15 msix packaging tool打包问题