Skip to content

Commit fa80107

Browse files
author
James Chen
committed
Merge pull request cocos2d#6 from minggo/iss1583-update-js
CocosDragonJS MoonWarriors and TestJavascript work ok on Android
2 parents 297af8d + b3d23eb commit fa80107

File tree

7 files changed

+51
-33
lines changed

7 files changed

+51
-33
lines changed

cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxAccelerometer.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,9 +116,10 @@ public void onSensorChanged(final SensorEvent pSensorEvent) {
116116
final float tmp = x;
117117
x = y;
118118
y = -tmp;
119-
}
120-
121-
Cocos2dxAccelerometer.onSensorChanged(x, y, z, pSensorEvent.timestamp);
119+
}
120+
121+
Cocos2dxGLSurfaceView.queueAccelerometer(x,y,z,pSensorEvent.timestamp);
122+
122123
/*
123124
if(BuildConfig.DEBUG) {
124125
Log.d(TAG, "x = " + pSensorEvent.values[0] + " y = " + pSensorEvent.values[1] + " z = " + pSensorEvent.values[2]);
@@ -132,9 +133,10 @@ public void onAccuracyChanged(final Sensor pSensor, final int pAccuracy) {
132133

133134
// ===========================================================
134135
// Methods
136+
// Native method called from Cocos2dxGLSurfaceView (To be in the same thread)
135137
// ===========================================================
136-
137-
private static native void onSensorChanged(final float pX, final float pY, final float pZ, final long pTimestamp);
138+
139+
public static native void onSensorChanged(final float pX, final float pY, final float pZ, final long pTimestamp);
138140

139141
// ===========================================================
140142
// Inner and Anonymous Classes

cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxGLSurfaceView.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,16 @@ public void handleMessage(final Message msg) {
117117
// Getter & Setter
118118
// ===========================================================
119119

120+
121+
public static void queueAccelerometer(final float x, final float y, final float z, final long timestamp) {
122+
mCocos2dxGLSurfaceView.queueEvent(new Runnable() {
123+
@Override
124+
public void run() {
125+
Cocos2dxAccelerometer.onSensorChanged(x, y, z, timestamp);
126+
}
127+
});
128+
}
129+
120130
public void setCocos2dxRenderer(final Cocos2dxRenderer renderer) {
121131
this.mCocos2dxRenderer = renderer;
122132
this.setRenderer(this.mCocos2dxRenderer);

cocos2dx/platform/android/java/src/org/cocos2dx/lib/Cocos2dxRenderer.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,23 +79,32 @@ public void onSurfaceChanged(final GL10 pGL10, final int pWidth, final int pHeig
7979

8080
@Override
8181
public void onDrawFrame(final GL10 gl) {
82+
/*
83+
* FPS controlling algorithm is not accurate, and it will slow down FPS
84+
* on some devices. So comment FPS controlling code.
85+
*/
86+
87+
/*
8288
final long nowInNanoSeconds = System.nanoTime();
8389
final long interval = nowInNanoSeconds - this.mLastTickInNanoSeconds;
90+
*/
8491

8592
// should render a frame when onDrawFrame() is called or there is a
8693
// "ghost"
8794
Cocos2dxRenderer.nativeRender();
8895

96+
/*
8997
// fps controlling
9098
if (interval < Cocos2dxRenderer.sAnimationInterval) {
9199
try {
92100
// because we render it before, so we should sleep twice time interval
93-
Thread.sleep((Cocos2dxRenderer.sAnimationInterval - interval) * 2 / Cocos2dxRenderer.NANOSECONDSPERMICROSECOND);
101+
Thread.sleep((Cocos2dxRenderer.sAnimationInterval - interval) / Cocos2dxRenderer.NANOSECONDSPERMICROSECOND);
94102
} catch (final Exception e) {
95103
}
96104
}
97105
98106
this.mLastTickInNanoSeconds = nowInNanoSeconds;
107+
*/
99108
}
100109

101110
// ===========================================================

samples/CocosDragonJS/proj.android/build_native.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4949
COCOS2DX_ROOT="$DIR/../../.."
5050
APP_ROOT="$DIR/.."
5151
APP_ANDROID_ROOT="$DIR"
52+
RESROUCE_ROOT="$APP_ROOT/../TestJavascript/cocos2d-js-tests/games/CocosDragonJS/Published files iOS"
53+
BINDINGS_JS_ROOT="$APP_ROOT/../../scripting/javascript/bindings/js"
5254

5355
echo
5456
echo "Paths"
@@ -69,10 +71,10 @@ fi
6971
mkdir "$APP_ANDROID_ROOT"/assets
7072

7173
# copy "Resources" into "assets"
72-
cp -rf "$APP_ROOT"/Resources/* "$APP_ANDROID_ROOT"/assets
74+
cp -rf "$RESROUCE_ROOT"/* "$APP_ANDROID_ROOT"/assets
7375

7476
# copy bindings/*.js into assets' root
75-
cp -f "$APP_ROOT"/bindings/*.js "$APP_ANDROID_ROOT"/assets
77+
cp -f "$BINDINGS_JS_ROOT"/*.js "$APP_ANDROID_ROOT"/assets
7678

7779
echo "Using prebuilt externals"
7880
echo

samples/MoonWarriors/proj.android/build_native.sh

Lines changed: 10 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4848
COCOS2DX_ROOT="$DIR/../../.."
4949
APP_ROOT="$DIR/.."
5050
APP_ANDROID_ROOT="$DIR"
51+
RESROUCE_ROOT="$APP_ROOT/../TestJavascript/cocos2d-js-tests/games/MoonWarriors/res"
52+
BINDINGS_JS_ROOT="$APP_ROOT/../../scripting/javascript/bindings/js"
5153

5254
echo
5355
echo "Paths"
@@ -65,29 +67,16 @@ fi
6567
mkdir "$APP_ANDROID_ROOT"/assets
6668

6769

68-
# copy resources
69-
for file in "$APP_ROOT"/Resources/*
70-
do
71-
if [ -d "$file" ]; then
72-
cp -rf "$file" "$APP_ANDROID_ROOT"/assets
73-
fi
74-
75-
76-
if [ -f "$file" ]; then
77-
cp "$file" "$APP_ANDROID_ROOT"/assets
78-
fi
79-
done
70+
# copy "Resources" into "assets"
71+
cp -rf "$RESROUCE_ROOT" "$APP_ANDROID_ROOT"/assets
8072

73+
# copy MoonWarriors js
74+
cp -rf "$RESROUCE_ROOT"/../src "$APP_ANDROID_ROOT"/assets
75+
# copy MoonWarriors-native.js
76+
cp "$RESROUCE_ROOT"/../MoonWarriors-native.js "$APP_ANDROID_ROOT"/assets
8177

82-
rm -f "$APP_ANDROID_ROOT"/assets/Images/landscape-1024x1024-rgba8888.pvr.gz
83-
rm -f "$APP_ANDROID_ROOT"/assets/Images/test_image_rgba4444.pvr.gz
84-
rm -f "$APP_ANDROID_ROOT"/assets/Images/test_1021x1024_a8.pvr.gz
85-
rm -f "$APP_ANDROID_ROOT"/assets/Images/test_1021x1024_rgb888.pvr.gz
86-
rm -f "$APP_ANDROID_ROOT"/assets/Images/test_1021x1024_rgba4444.pvr.gz
87-
rm -f "$APP_ANDROID_ROOT"/assets/Images/test_1021x1024_rgba8888.pvr.gz
88-
rm -f "$APP_ANDROID_ROOT"/assets/Images/test_image_rgba4444.pvr.gz
89-
rm -f "$APP_ANDROID_ROOT"/assets/Images/texture1024x1024_rgba4444.pvr.gz
90-
rm -f "$APP_ANDROID_ROOT"/assets/Images/PlanetCute-1024x1024-rgba4444.pvr.gz
78+
# copy bindings/*.js into assets' root
79+
cp -f "$BINDINGS_JS_ROOT"/*.js "$APP_ANDROID_ROOT"/assets
9180

9281

9382
echo "Using prebuilt externals"

samples/TestJavascript/proj.android/build_native.sh

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4848
COCOS2DX_ROOT="$DIR/../../.."
4949
APP_ROOT="$DIR/.."
5050
APP_ANDROID_ROOT="$DIR"
51+
BINDINGS_JS_ROOT="$APP_ROOT/../../scripting/javascript/bindings/js"
5152

5253
echo
5354
echo "Paths"
@@ -69,13 +70,16 @@ mkdir "$APP_ANDROID_ROOT"/assets
6970
mkdir "$APP_ANDROID_ROOT"/assets/res
7071

7172
# copy "cocos2d-js-tests/res" into "assets/res"
72-
cp -rf "$APP_ROOT"/cocos2d-js-tests/res "$APP_ANDROID_ROOT"/assets
73+
cp -rf "$APP_ROOT"/cocos2d-js-tests/tests/res "$APP_ANDROID_ROOT"/assets
7374

7475
# copy src/**/*.js from cocos2d-js-tests into assets' root
75-
cp -rf "$APP_ROOT"/cocos2d-js-tests/src "$APP_ANDROID_ROOT"/assets
76+
cp -rf "$APP_ROOT"/cocos2d-js-tests/tests "$APP_ANDROID_ROOT"/assets
77+
78+
# copy root js
79+
cp -rf "$APP_ROOT"/cocos2d-js-tests/tests/*.js "$APP_ANDROID_ROOT"/assets
7680

7781
# copy bindings/*.js into assets' root
78-
cp -f "$APP_ROOT"/bindings/*.js "$APP_ANDROID_ROOT"/assets
82+
cp -f "$BINDINGS_JS_ROOT"/* "$APP_ANDROID_ROOT"/assets
7983

8084
echo "Using prebuilt externals"
8185
echo

scripting/javascript/bindings/cocos2d_specifics.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -790,7 +790,9 @@ void JSScheduleWrapper::scheduleFunc(float dt) const
790790
return;
791791
}
792792

793-
if(!JSVAL_IS_VOID(jsCallback) && !JSVAL_IS_VOID(jsThisObj)) {
793+
if(!jsCallback.isNullOrUndefined() || !jsThisObj.isNullOrUndefined()) {
794+
JSAutoCompartment ac(cx, JSVAL_TO_OBJECT(jsThisObj));
795+
794796
JS_CallFunctionValue(cx, JSVAL_TO_OBJECT(jsThisObj), jsCallback, 1, &data, &retval);
795797
}
796798

0 commit comments

Comments
 (0)