先ほどの質問の続きになってすみませんがよろしくお願いします。
コード public class MainActivity extends Activity implements Runnable{ Handler mHandler; Thread thread; FrameLayout frameLayout; SampleView sv; Hanabi hanabi = new Hanabi(); int time = 0; double mul = 0.15; double times; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); frameLayout = new FrameLayout(this); setContentView(frameLayout); sv = new SampleView(this); frameLayout.addView(sv); mHandler = new Handler(); thread = new Thread(this); thread.start(); } @Override public void run(){ hanabi.setX(); for(time = 0; time < 100; time++){ times = time*mul; try{ Thread.sleep(50); } catch(InterruptedException e){ } hanabi.setY(times); mHandler.post(new Runnable(){ @Override public void run(){ sv.invalidate(); //tv.setText("y は" + hanabi.getY()); } }); } } }
コード public class SampleView extends View{ Hanabi hanabi = new Hanabi(); Paint paint = new Paint(); public SampleView(Context context) { super(context); } protected void onDraw(Canvas canvas){ paint.setColor(Color.RED); paint.setStrokeWidth(10); canvas.drawPoint(hanabi.getX(), hanabi.getY(), paint); } }
コード public class Hanabi{ int x; int y; double V0x = 0.0; double V0y = 180.0; double Vx; double Vy; double G = 9.8*2; public void setX(){ this.x = (int)(Math.random()*800) + 50; } public void setY(double times){ Vy = V0y - G*times; this.y = (int)(1100 - (V0y*times - G*times*times/2)); } public int getX(){ return this.x; } public int getY(){ return this.y; } }
これは花火のプログラムの一部で、花火が打ち上がっている部分だけを描画しているものです。
セッターとゲッターを使って花火の位置を描画しようとしたのですが、これを実行したところx=0、y=0の点で赤点が描画されるだけでした。
canvas.drawPoint(hanabi.getX(), hanabi.getY(), paint);
この部分のhanabi.getX(), hanabi.getY()にちゃんと数字が入っていないと思われるのですが、どこがダメなのでしょうか?
ちなみにコメントアウトしてあるtv.setText("y は" + hanabi.getY());で確認したところ、ここには0.5秒ごとに数字が変化しているのでhanabi.getY();自体にはちゃんと数字が入っていると思います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/08 06:59
2016/04/08 07:13
2016/04/08 07:58 編集
2016/04/11 07:54