前提・実現したいこと
動かしている画像の最初の色を設定したいです。
◎最終的にはラケットボールゲームを作りたいです◎
android studioで動く丸を作りました。
壁に当たったら丸の色が変わるようにsetColorをしたのですが
最初に実行してから壁に当たるまでの丸の色が上手く変えられません。
実行してから最初の壁に当たるまではSYANにしたいのですが
初期値としてsetColorすると跳ね返る瞬間以外は
すべて初期値になってしまう状況です。
(↑上書きされるのはinvalidate()だからだと思っている)
教えてください素敵にエロい人々。
MyHoge.java
package com.websarva.wings.android.tennis;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.View;
public class MyHoge extends View {
int width = 0;
int height = 0;
//ボールの大きさを決める
int r = 20; // ボールの半径
//初期位置を決める
int x = 50; // x座標
int y = 50; // y座標
//1回の動作で動く量を決める
int mx = 3; // x座標の移動量
int my = 3; // y座標の移動量
//大きい丸用のペンと小さい丸用のペンを作っちゃう Paint myBall1 = new Paint(); Paint myBall2 = new Paint(); public MyHoge(Context context) { super(context); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); //初期値をset myBall1 .setAntiAlias(true); myBall1 .setStyle(Paint.Style.FILL); myBall1 .setColor(Color.RED); myBall2 .setAntiAlias(true); myBall2 .setStyle(Paint.Style.FILL); //円を中央に置く-固定されている円(背景的な位置付け) width = this.getWidth(); height = this.getHeight(); canvas.drawCircle(width / 2, height / 2, 100, myBall1 ); //動く用の円 努力の残像です
// String color = "#000000";
// myBall2 .setColor(Color.parseColor(color));
//移動する方向を決める //ボールの現在地に移動量を加える x = x + mx; y = y + my; if (x >= width-r) { mx *= -1; myBall2 .setColor(Color.BLUE); }else if(x-r < 0){ mx *= -1; myBall2 .setColor(Color.GRAY); } if (y >= height-r) { my *= -1; myBall2 .setColor(Color.GREEN); }else if (y-r < 0){ my *= -1; myBall2 .setColor(Color.DKGRAY); } canvas.drawCircle(x, y, r, myBall2 ); invalidate(); }
}
あなたの回答
tips
プレビュー