私は画面にイメージを置き、5秒ごとにそれを変更しようとしています。これはActivityクラスにはありません。申し訳ありませんが、愚かな質問です。これは私にとって大きな学習曲線です。アンドロイドのハンドラーを使って一連のpngを作成する
public class Panel extends SurfaceView implements SurfaceHolder.Callback {
private Handler mHandler = new Handler();
//stuff
public void doDraw(Canvas canvas) {
int counter = 0;
canvas.drawColor(Color.BLACK);
dot1.doDraw(getResources(), canvas, counter);
mHandler.removeCallbacks(panelDraw);
mHandler.postDelayed(panelDraw, 5000);
}
private Runnable panelDraw = new Runnable() {
public void run() {
}
};
(パネル - >)別のクラスのmPanel.doDraw(canvas)は、PanelにリストされているdoDrawを呼び出します。これはループしている。
私が知る限り、最初の画像は5秒間停止せず、他のコードのために、猫の写真が画面全体に点滅します。私は何もしないで立ち去ることができますか?私はそこにdot1.doDraw(getResources()、canvas、counter)を入れたいと思いましたが、void run()パラメータやRunnableのpanelDrawリソース、canvas、counterパラメータを与えることができませんでした。
何か助けていただければ幸いです。コードをもっと与える必要があるかどうかを教えてください。
私のゲームについてもう少しです:子猫の写真は、画面上のランダムな場所に表示されます。割り当てられた時間の現在のキティ画像をクリックしないと、ゲームは終了します。これらの写真は最後に<の1秒後に表示されます(テスト目的では今すぐです)。その時間帯にキティをクリックしないと、ゲームは終了します。
多くの描画が必要な場合は、チュートリアルのようにSurfaceViewを使用する方がよいと聞いています。http://www.droidnova.com/2d-tutorial-series-part-v,848.html My Activityクラス(Scene1)にsetContentView(新しいPanel(this)だから私はすべてがPanelクラスに入っているときに、Activityクラスに物を入れる方法を知らない。アクティビティスレッドが実際にあまり効果を上げず、Panelにすべて渡すとImageViewコードはどこに置かれますか?私は、実行中の処理ViewThread(publicクラスViewThreadがスレッドを拡張する)持っている場合にも:
public void firstRing(Resources res, Canvas canvas, int counter){
Random rand = new Random();
switch(counter) {
case 0: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat1_m);
break;
case 1: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 2: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 3: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 4: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat2_m);
break;
case 5: mBitmap = BitmapFactory.decodeResource(res,
R.drawable.cat1_m);
break;
}
mX = rand.nextInt((int)(Panel.mWidth - mBitmap.getWidth()));
mY = rand.nextInt((int)(Panel.mHeight - mBitmap.getHeight()));
canvas.drawBitmap(mBitmap, mX, mY, null);
と
public void doDraw(Resources res, Canvas canvas, int counter) {
firstRing(res, canvas, counter);
}
:
public void run() {
Canvas canvas = null;
while (mRun1) {
do {
canvas = mHolder.lockCanvas();
if (canvas != null) {
mPanel.doDraw(canvas);
mRun1 = true;
mRun1 = mPanel.get_run();
mHolder.unlockCanvasAndPost(canvas);
}
} while (mRun1 == true);
をドットクラスのような何かを持っています情報をありがとう、バリー、私は少し混乱していますが。私はそれを使用する方法がわからなくてもImageViewを試すか、Handler()を使用して固定しますか?現在動作していませんか?私はpublic void run()で何か必要ですか?
rochdevが指摘したように、あなたは基本的にあなたが作成したスレッドである非UIスレッド(で見ると協力することはありませんので、私は私の元の答えを削除あなた自身)。 簡単な答えは、ImageViewとハンドラを使用することです。私は以下の新しい答えで説明しようとします。 –