亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在添加和刪除 TextView 之間暫停程序

在添加和刪除 TextView 之間暫停程序

蠱毒傳說 2023-10-12 17:20:24
我正在開發一款坦克游戲,我有一個TextView代表射擊的游戲?,F在我想TextView在特定點顯示 并在一秒鐘后將其刪除,看起來鏡頭一步一步走得更遠。但是,當我添加倒計時或 a 時,Thread.sleep程序會停止一秒鐘,但TextView不會消失。我想將 TextView 移動到屏幕上,并且在 for 循環的每次迭代之后我想等待一秒鐘,然后再次重新排列它?這是代碼: public void shot(float power, float winkel, Button button) {        if(winkel>90) {            winkel = winkel - 10;        }else if(winkel<90){            winkel = winkel +10;        }        for (double i = 0; i<100;i = i+ 1) {            final TextView textView = new TextView(context);            textView.setText(".");            double x = tanks.get(currentTank).getxPos()+(i*power*Math.cos(winkel *(Math.PI/180)));            double y = tanks.get(currentTank).getyPos()+(-1*(i*power*Math.sin(winkel *(Math.PI/180))));            double gravity = (-1*((9.81/2)*Math.pow(i,2)));            y = (y-gravity);            textView.setX((float) x);            textView.setY((float) y);            layout.addView(textView);            for (int j = 0;j<tanks.size();j++){                if(textView.getX()>tanks.get(j).getxPos()&&textView.getX()<tanks.get(j).getxPos()+100){                    if(textView.getY()>tanks.get(j).getyPos()&&textView.getY()<tanks.get(j).getyPos()+100){                        float k = tanks.get(j).getxPos()-textView.getX();                        if(k<0){                            k = k*-1;                        }                        makeDamage(k,tanks.get(j));                    }                }            }            new CountDownTimer(2000,1000){                @Override                public void onTick(long millisUntilFinished) {                }                @Override                public void onFinish() {                    layout.removeView(textView);                }            }.start();        }        newTurn();    }我想在添加一秒鐘后暫停程序TextView并將其刪除。程序停止,但TextView直到 for 循環完成才消失。然后全部TextViews消失。
查看完整描述

2 回答

?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

問題解決了: 我已經添加了數組中的所有位置,然后這個


public void drawShot(final Button firework, final ArrayList<TextView> toDraw){

    final int[] i = {0};

    final Handler mHandler = new Handler();


    firework.setOnClickListener(new View.OnClickListener() {

        @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)

        @Override

        public void onClick(View v) {

            firework(firework,toDraw.get(i[0]).getX(),toDraw.get(i[0]).getY());

        }

    });



    Runnable runnable = new Runnable() {

        @Override

        public void run() {


                layout.addView(toDraw.get(i[0]));

                if(!check(toDraw.get(i[0]))) {

                    mHandler.postDelayed(this, (long) 1);

                }

                i[0]++;


        }

    };


    // start it with:

    mHandler.post(runnable);


}


查看完整回答
反對 回復 2023-10-12
?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

可能需要在主線程上運行刪除命令


Handler mainHandler = new Handler(context.getMainLooper());


Runnable myRunnable = new Runnable() {

    @Override 

    public void run() {

       layout.removeView(textView);

    } 

};

mainHandler.post(myRunnable);


查看完整回答
反對 回復 2023-10-12
  • 2 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號