Android 安发动机赢得';我不想把事情弄糟
我试图创建一个简单的场景,并展示它,但它不会工作,我无法找到我做错了什么 这是我的主要活动Android 安发动机赢得';我不想把事情弄糟,android,andengine,scene,Android,Andengine,Scene,我试图创建一个简单的场景,并展示它,但它不会工作,我无法找到我做错了什么 这是我的主要活动 public class MainActivity extends BaseGameActivity implements IOnSceneTouchListener{ final static String TAG = "BounceTest"; Scene scene; float downX; float downY; @Override public EngineOptions onCreate
public class MainActivity extends BaseGameActivity implements IOnSceneTouchListener{
final static String TAG = "BounceTest";
Scene scene;
float downX;
float downY;
@Override
public EngineOptions onCreateEngineOptions() {
Log.d(TAG, "onCreateEngineOptions");
return new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new FillResolutionPolicy(), new Camera(0, 0, 800, 480));
}
@Override
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws Exception {
Log.d(TAG, "onCreateResources");
}
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception {
Log.d(TAG, "onCreateScene");
scene = new Scene(){
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
Log.d(TAG, "onManagedUpdate");
super.onManagedUpdate(pSecondsElapsed);
}
};
this.getEngine().setScene(scene);
scene.setOnSceneTouchListener(this);
}
@Override
public void onPopulateScene(Scene pScene, OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {
Log.d(TAG, "onPopulateScene");
Rectangle floor = new Rectangle(-200, 0, 1000, 20, this.getVertexBufferObjectManager());
Rectangle square = new Rectangle(0, 20, 20, 20, this.getVertexBufferObjectManager());
scene.attachChild(floor);
scene.attachChild(square);
}
@Override
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
Log.d(TAG, "onSceneTouchEvent");
if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN){
downX = pSceneTouchEvent.getX();
downY = pSceneTouchEvent.getY();
}else if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_UP){
float upX = pSceneTouchEvent.getX();
float upY = pSceneTouchEvent.getY();
float xDiff = downX - upX;
float yDiff = downY - upY;
float dragLength = (float)Math.sqrt(xDiff*xDiff+yDiff*yDiff);
Log.d(TAG, "dragLength:"+dragLength);
}
return false;
}
}
我在手机上看到的只是一个黑屏(没有矩形),不显示“onManagedUpdate”,触摸屏幕也不会呼叫onSceneTouchEvent
为什么会这样?对于onSceneTouchEvent调用,返回true。在引擎生命周期方法中将一个方法转移到另一个方法时完成回调方法。将下面3行添加到相应的方法中
pOnCreateResourcesCallback.onCreateResourcesFinished(); after onCreateResources() finished
pOnCreateSceneCallback.onCreateSceneFinished(mScene); after onCreateScene() finished
pOnPopulateSceneCallback.onPopulateSceneFinished(); after onPopulateScene() finished.
比如:
返回onSceneTouchEvent调用的true。在引擎生命周期方法中将一个方法转移到另一个方法时完成回调方法。将下面3行添加到相应的方法中
pOnCreateResourcesCallback.onCreateResourcesFinished(); after onCreateResources() finished
pOnCreateSceneCallback.onCreateSceneFinished(mScene); after onCreateScene() finished
pOnPopulateSceneCallback.onPopulateSceneFinished(); after onPopulateScene() finished.
比如: