mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-26 02:42:02 +01:00
Updated Android (markdown)
parent
f163dbf888
commit
72f4835b44
22
Android.md
22
Android.md
@ -13,7 +13,7 @@ You need to create a module for mobiles with `github.com/hajimehoshi/ebiten/mobi
|
||||
For an actual example, see [`github.com/hajimehoshi/go-inovation/mobile/mobile.go`](https://github.com/hajimehoshi/go-inovation/blob/master/mobile/mobile.go).
|
||||
|
||||
```go
|
||||
package yourgame
|
||||
package mobile
|
||||
|
||||
import (
|
||||
"github.com/hajimehoshi/ebiten/mobile"
|
||||
@ -73,7 +73,7 @@ func UpdateTouchesOnIOS(phase int, ptr int64, x, y int) {
|
||||
Use `gomobile bind`, generate an aar file and import this to your Android Studio project as an external aar file. Here is the example command to build the module.
|
||||
|
||||
```sh
|
||||
:; gomobile bind -target android -javapkg com.example.yourgame.go -o /path/to/android/studio/project/mobile.aar github.com/yourname/yourgame/mobile
|
||||
:; gomobile bind -target android -javapkg com.example.yourgame -o /path/to/android/studio/project/mobile.aar github.com/yourname/yourgame/mobile
|
||||
```
|
||||
|
||||
## Implement Java classes
|
||||
@ -95,8 +95,6 @@ import android.view.View;
|
||||
import javax.microedition.khronos.egl.EGLConfig;
|
||||
import javax.microedition.khronos.opengles.GL10;
|
||||
|
||||
import com.example.yourgame.go.Yourgame;
|
||||
|
||||
public class EbitenGLSurfaceView extends GLSurfaceView {
|
||||
|
||||
private class EbitenRenderer implements Renderer {
|
||||
@ -111,7 +109,7 @@ public class EbitenGLSurfaceView extends GLSurfaceView {
|
||||
try {
|
||||
// onDrawFrame is called every frame.
|
||||
// Let's call your game's Update.
|
||||
Yourgame.Update();
|
||||
Mobile.Update();
|
||||
} catch (Exception e) {
|
||||
Log.e("Go Error", e.toString());
|
||||
mErrored = true;
|
||||
@ -158,8 +156,8 @@ public class EbitenGLSurfaceView extends GLSurfaceView {
|
||||
public double getScaleInPx() {
|
||||
View parent = (View)getParent();
|
||||
return Math.max(1,
|
||||
Math.min(parent.getWidth() / (double)Yourgame.ScreenWidth,
|
||||
parent.getHeight() / (double)Yourgame.ScreenHeight));
|
||||
Math.min(parent.getWidth() / (double)Mobile.ScreenWidth,
|
||||
parent.getHeight() / (double)Mobile.ScreenHeight));
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -167,11 +165,11 @@ public class EbitenGLSurfaceView extends GLSurfaceView {
|
||||
super.onLayout(changed, left, top, right, bottom);
|
||||
// Calculate the scale fitting the screen and use it.
|
||||
double scaleInPx = getScaleInPx();
|
||||
getLayoutParams().width = (int)(Yourgame.ScreenWidth * scaleInPx);
|
||||
getLayoutParams().height = (int)(Yourgame.ScreenHeight * scaleInPx);
|
||||
getLayoutParams().width = (int)(Mobile.ScreenWidth * scaleInPx);
|
||||
getLayoutParams().height = (int)(Mobile.ScreenHeight * scaleInPx);
|
||||
try {
|
||||
if (!Yourgame.IsRunning()) {
|
||||
Yourgame.Start(pxToDp(scaleInPx));
|
||||
if (!Mobile.IsRunning()) {
|
||||
Mobile.Start(pxToDp(scaleInPx));
|
||||
}
|
||||
} catch (Exception e) {
|
||||
Log.e("Go Error", e.toString());
|
||||
@ -188,7 +186,7 @@ public class EbitenGLSurfaceView extends GLSurfaceView {
|
||||
int y = (int)e.getY(i);
|
||||
// Call `mobile.UpdateTouchesOnAndroid` via your exported function.
|
||||
// The position is in dp.
|
||||
Yourgame.UpdateTouchesOnAndroid(e.getActionMasked(), id, (int)pxToDp(x), (int)pxToDp(y));
|
||||
Mobile.UpdateTouchesOnAndroid(e.getActionMasked(), id, (int)pxToDp(x), (int)pxToDp(y));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user