forked from cocos2d/cocos2d-x
-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathCocos2dxGLSurfaceView.java
119 lines (101 loc) · 4.09 KB
/
Cocos2dxGLSurfaceView.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package org.cocos2dx.lib;
import org.cocos2dx.lib.touch.metalev.multitouch.controller.MultiTouchController;
import org.cocos2dx.lib.touch.metalev.multitouch.controller.MultiTouchController.MultiTouchObjectCanvas;
import org.cocos2dx.lib.touch.metalev.multitouch.controller.MultiTouchController.PointInfo;
import org.cocos2dx.lib.touch.metalev.multitouch.controller.MultiTouchController.PositionAndScale;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.util.Log;
import android.view.MotionEvent;
public class Cocos2dxGLSurfaceView extends GLSurfaceView implements
MultiTouchObjectCanvas {
private static final String TAG = Cocos2dxGLSurfaceView.class
.getCanonicalName();
private MultiTouchController<Void> mTouchController;
private Cocos2dxRenderer mRenderer;
public Cocos2dxGLSurfaceView(Context context) {
super(context);
mRenderer = new Cocos2dxRenderer();
setRenderer(mRenderer);
mTouchController = new MultiTouchController<Void>(this);
}
public boolean onTouchEvent(final MotionEvent event) {
if (mTouchController.onTouchEvent(event)) {
final PointInfo pt = mTouchController.mCurrPt;
final int ids[] = new int[pt.getNumTouchPoints()];
final float xs[] = new float[pt.getNumTouchPoints()];
final float ys[] = new float[pt.getNumTouchPoints()];
for (int i = 0; i < pt.getNumTouchPoints(); i++) {
ids[i] = pt.getPointerIds()[i];
xs[i] = pt.getXs()[i];
ys[i] = pt.getYs()[i];
Log.d(TAG,
"ACTION: " + pt.getAction() + "id[i]="
+ pt.getPointerIds()[i] + "x[i]= "
+ pt.getXs()[i] + " y[i]= " + pt.getYs()[i]);
}
switch (pt.getAction()) {
case MotionEvent.ACTION_DOWN:
case 261:
case MotionEvent.ACTION_POINTER_DOWN:
Log.d(TAG, "ACTION_DOWN");
queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.handleActionDown(ids, xs, ys);
}
});
break;
case MotionEvent.ACTION_MOVE:
Log.d(TAG, "ACTION_MOVE");
queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.handleActionMove(ids, xs, ys);
}
});
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_POINTER_UP:
Log.d(TAG, "ACTION_UP");
queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.handleActionUp(ids, xs, ys);
}
});
break;
case MotionEvent.ACTION_CANCEL:
queueEvent(new Runnable() {
@Override
public void run() {
mRenderer.handleActionCancel(ids, xs, ys);
}
});
break;
}
return true;
}
return false;
}
@Override
public Object getDraggableObjectAtPoint(PointInfo touchPoint) {
// TODO Auto-generated method stub
return null;
}
@Override
public void getPositionAndScale(Object obj,
PositionAndScale objPosAndScaleOut) {
// TODO Auto-generated method stub
}
@Override
public boolean setPositionAndScale(Object obj,
PositionAndScale newObjPosAndScale, PointInfo touchPoint) {
// TODO Auto-generated method stub
return false;
}
@Override
public void selectObject(Object obj, PointInfo touchPoint) {
// TODO Auto-generated method stub
}
}