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 (https://code.club/)
Powered by Discuz! X3.2