code.club

標題: 有關在 draw() 寫條件迴圈 do{}while()的問題 [打印本頁]

作者: enter    時間: 2017-1-7 16:34
標題: 有關在 draw() 寫條件迴圈 do{}while()的問題
這念也適用於 openframeworks裡的 draw()。
在 void draw()裡面寫條件式,包括 if(){},while(){},do{}while(),其中前面二個都可以順利執行,但 do{}while()卻問題,compiler似乎會不理睬後面while()中的條而一直執行do{}下去直到超出邊界。

事實上是,void draw()本身就類似是一個 do{}while()的函數,它執行裡面的程式之後會再重新執一次,一直下去,除非裡面的條件不符合。但像do{}while(),例如  do{ println(x);x++;}while(x<5),就算在某次執行時已經x==5了,但draw()再進去執行時,都像全新執行程式一般,就直接先去do{}裡的東西,雖然此時的while()已經不符合執行條件,但因為先執行了do{}所以後面的while就整個無效。而draw()會一直跳進來執行,每次都是先遇到 do{},此時後面的while()根本就無法發揮它的判斷功能。

如果用每頁frame的設定來看可以看出來,第一個frame出現時,x確實印到了4就停止了,此時x++已變成5。但下一個frame又開始執行時,do{}就直接先印出了5,然後雖然不再印下去因為x已經不小於5了而且已等於6,可是draw()又要執行一個新的frame,於是又去do{}印出了6,然後又跳出去執行新的frame,於是7,8,9....會一直印下去。

以上是請教過銘傳資傳系葉正聖老師之後學到的觀念。






歡迎光臨 code.club (http://code.club/) Powered by Discuz! X3.2