第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

我想在物體達(dá)到某個(gè)點(diǎn)時(shí)擺脫它

我想在物體達(dá)到某個(gè)點(diǎn)時(shí)擺脫它

喵喵時(shí)光機(jī) 2022-11-02 09:59:22
我正在制作一個(gè)游戲,我有計(jì)時(shí)器循環(huán),并且在計(jì)時(shí)器中我有一些允許花生成的功能。一旦花朵達(dá)到 300 歲,它們就會(huì)變成死花,圖像會(huì)發(fā)生變化,但是一旦它們達(dá)到 400 歲,我希望它們消失在場(chǎng)景中,但我不知道我要去哪里做錯(cuò)了所以。AnimationTimer timer = new AnimationTimer() {           ArrayList<GameObject>DeadFlowers = new ArrayList<GameObject>();    @Override    public void handle(long now) {        // TODO Auto-generated method stub          gc.drawImage(img1, 0, 0, canvas.getWidth(), canvas.getHeight());        if(count++>60) {            flowers.add(new SpawnFlowers(gc, rnd.nextInt(600), rnd.nextInt(550)));            count = 1;        }        for(GameObject obj : Hive) {            obj.update();        }        for(GameObject obj : flowers) {             ((SpawnFlowers)obj).grow();        }        for(GameObject obj : DeadFlowers) {            ((SpawnFlowers)obj).removeFlowers();            DeadFlowers.remove(obj);        }        for(GameObject obj : characterList) {            obj.update();        }    }};我的鮮花課:class SpawnFlowers extends GameObject implements FlowerIF {  FlowerIF delegate;  int age= 0;  public SpawnFlowers(GraphicsContext gc, double x, double y) {    super(gc, x, y);    img = new Image("/res/rose.png");    update();    delegate = this;    // TODO Auto-generated constructor stub  }public void grow() {    age+=1;    if(age == 300)        delegate = new DeadFlower(gc, x, y);    delegate.update();}public void removeFlowers() {    if (age == 400) {        delegate.update();    }}}
查看完整描述

3 回答

?
aluckdog

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊

你有一個(gè)清單DeadFlowers,但你從來(lái)沒(méi)有add()什么東西。


因此你的循環(huán)


for(GameObject obj : DeadFlowers) {

    ((SpawnFlowers)obj).removeFlowers();

    DeadFlowers.remove(obj);

}

永遠(yuǎn)不會(huì)跑。


你可以例如做


public void grow() {

    age+=1;

    if(age == 300) {

        delegate = new DeadFlower(gc, x, y);

        DeadFlowers.add(delegate);

    }

    delegate.update();

}

我不確定你想用這種方法實(shí)現(xiàn)什么。如果這只是重新繪制的代碼,您可能想要?jiǎng)h除條件。


public void removeFlowers() {

    if (age == 400) {

        delegate.update();

    }

}


查看完整回答
反對(duì) 回復(fù) 2022-11-02
?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

最喜歡的是,您的實(shí)際問(wèn)題在這里:


 for(GameObject obj : DeadFlowers) {

   ((SpawnFlowers)obj).removeFlowers();

   DeadFlowers.remove(obj);

 } 

當(dāng)花 300 歲時(shí),您將花變成了 DeadFlower。我假設(shè)您還將新的 DeadFlower 對(duì)象添加到您的死花列表中。在下一個(gè)游戲循環(huán)中,上面的代碼調(diào)用 checks: is the age 400, if so ... do nothing。接下來(lái),您的代碼將從死花列表中刪除該死花對(duì)象!


換句話說(shuō):當(dāng)花朵達(dá)到 300 時(shí),您將其變成一朵死花。之后,您從死花列表中刪除那朵死花。因此,該列表將始終立即清空。


長(zhǎng)話短說(shuō):你的整個(gè)邏輯都搞砸了。您必須退后一步并清楚地概述(首先為自己)您擁有哪些存儲(chǔ)桶,以及您希望如何處理它們。如:


if (age == 400) {

    delegate.update();

}

此代碼對(duì) 400 案例沒(méi)有任何特定的作用。將其與 300 案例進(jìn)行比較。在那里你至少創(chuàng)建了一個(gè)新對(duì)象。有什么變化。但是在 400 的情況下,你會(huì)更新。那應(yīng)該怎么辦?!


除此之外:您似乎在該類的構(gòu)造函數(shù)中隱式地將死花添加到該列表中。超級(jí)壞主意。保存死花列表的類應(yīng)該是唯一將新花添加到該列表或刪除的地方。我假設(shè)您的 DeadFlowers 類知道該列表,并將新實(shí)例添加到該列表中。那是大錯(cuò)特錯(cuò)。


還有一件小事:ArrayList<GameObject>DeadFlowers = new ArrayList<GameObject>();最好是List<GameObject> deadFlowers = new ArrayList<>();. 左邊不需要表示具體類型(ArrayList),右邊也不需要使用泛型。當(dāng)然,這DeadFlowers違反了 java 命名約定(應(yīng)該以小寫(xiě)開(kāi)頭)。


查看完整回答
反對(duì) 回復(fù) 2022-11-02
?
有只小跳蛙

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超8個(gè)贊

如果我沒(méi)記錯(cuò)的話,在你的花死了之后,你的年齡似乎并沒(méi)有改變 那么為什么要到 400 歲呢?



查看完整回答
反對(duì) 回復(fù) 2022-11-02
  • 3 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)