この課題に答えるのを手伝ってください。私はインターネット全体とこの掲示板で答えを探していました。インターネットのどこかに以前に投稿されたものを参照することはできません。この質問は、Android で何をしているのかを知っている人にとっては些細なことかもしれません。
基本的に、私がやろうとしているのは、ゲーム ループを終了して結果ページに移動することです。ゲームがエンドゲームの if() に達したとき。アニメーションは停止しますが、意図はまだ画面の上にあります。
インテントの作成方法:
package com.droidnova.android.tutorial2d;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
public class Menu extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu);
Button btnStart = (Button) findViewById(R.id.btnStart);
btnStart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),Tutorial2D.class);
startActivity(intent);
finish();
}});
}
}
パネルの作成方法:
package com.droidnova.android.tutorial2d;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.view.SurfaceHolder;
public class Tutorial2D extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(new Panel(this));
}
@Override
protected
void onStop(){
//finish();
setContentView(R.layout.wynik);
Intent intent = new Intent(getApplicationContext(),Wynik.class);
startActivity(intent);
//getParent();
super.onStop();
}
protected void onPause(){
finish();
getParent();
super.onPause();
}}
パネル:
package com.droidnova.android.tutorial2d;
import java.util.*;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class Panel extends SurfaceView implements SurfaceHolder.Callback {
public static float mWidth;
public static float mHeight;
boolean koniec=false;
public float ostatnix;
public float ostatniy;
public int testx,testy;
public static int c=1;
public int punkty;
public ViewThread mThread;
private ArrayList<Element> mElements = new ArrayList<Element>();
private int mElementNumber = 0;
private Bitmap tlo;
private Paint mPaint = new Paint();
public Panel(Context context) {
super(context);
getHolder().addCallback(this);
mThread = new ViewThread(this);
mPaint.setColor(Color.WHITE);
tlo = BitmapFactory.decodeResource(getResources(), R.drawable.tlo);
}
public void doDraw(long elapsed, Canvas canvas) {//rysujemy!!
if(!koniec){
canvas.drawBitmap(tlo, 0, 0, null);
synchronized (mElements) {
for (Element element : mElements) {
element.doDraw(canvas);
}
}
}
else{canvas.drawColor(Color.BLACK);
//canvas.draw
};
}
// Element znajdz = mElements.get(0);
// canvas.drawText("FPS: " + Math.round(1000f / elapsed) + " Elements: " + mElementNumber +"X: "+znajdz.x1+"Y: "+znajdz.y1, 10, 10, mPaint);
// canvas.drawText("Ostatni X: "+ostatnix+" Y: "+ostatniy+" testx: "+testx+" testy: "+testy+" Punkty: "+punkty, 20, 20, mPaint);
// }
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
mWidth = width;
mHeight = height;
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
if (!mThread.isAlive()) {
//c=0;
mThread = new ViewThread(this);
mThread.setRunning(true);
mThread.start();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
if (mThread.isAlive()) {
mThread.setRunning(false);
}
}
public void addelements(){
int i;
for(i=0;i<1;i++){
mElements.add(new Element(getResources(), (int) 100, (int) 100));
mElementNumber = mElements.size();
}
}
public void koniec(){
int i;
for(i=0;i<mElements.size();i++){
Element znajdz = mElements.get(i);
if(znajdz.y1>mHeight*0.9){
koniec=true;
ここで、この if() が true の場合に結果画面に移動するコードを配置する必要があります。}
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
synchronized (mElements) {
// mElements.add(new Element(getResources(), (int) event.getX(), (int) event.getY()));
// mElementNumber = mElements.size();
ostatnix=(float) event.getX();
ostatniy=(float) event.getY();
int b;
for(b=0;b<mElements.size();b++){
Element znajdz = mElements.get(b);
testx=(int) znajdz.x1;testy=(int) znajdz.y1;
if(znajdz.x1+5<event.getX()&&event.getX()<znajdz.x1+64&&
znajdz.y1+5<event.getY()&&event.getY()<znajdz.y1+66
){
punkty++;
mElements.remove(znajdz);
}
};
(mElements.to(array));
//array = list.toArray(EMPTY_STRING_ARRAY);
mElements.trimToSize();
mElementNumber = mElements.size();
if(mElements.size()==0){ int i;
for(i=0;i<c;i++){
mElements.add(new Element(getResources(), (int) i, (int) i));
mElementNumber = mElements.size();
}
c++;
}
};
}
return super.onTouchEvent(event);
}
public void animate(long elapsedTime) {
synchronized (mElements) {
for (Element element : mElements) {
element.animate(elapsedTime);
}
}
}
}
ここで質問したくなかったのですが、トピックに関する知識がなく、答えを見つけることができなかったため、やむを得ませんでした:(助けてください。