在几天的制作中,遇见的困难很多。从简单的缺少宣告,到无法进行background,重新制作专案,我都有遇到过。其中,最让我印象深刻的是添加不同的图片到视讯窗口。这是我这个专案的转折点。之前在尝试放入图片到视讯窗口时,参考老师的程式码范例,是没有问题的。但要放自己的图片时,却出现scan line index out of range。询问了很多同学,都不清楚这个问题出在哪里,后来我通过自己查资料,查到了在进行ScanLine[j],如果j大于图片的大小,阵列读取图片时会发生错误,无法从图片读取到像素点,就会发生scan line index out of range.
專案心得:
因為老師再三的強調要把上課投影片裡的實作全部做過一遍才開始做專案,我就乖乖地跟著做完,果然實作對於做專案非常有幫助。首先是處理虛擬按鍵與差異偵測的部分,只要照著老師寫的程式碼進行部分的修改,很快就能做出所需要的玩家介面,但因為透過視訊鏡頭會使玩家的動作與螢幕所顯示的動作左右顛倒;雖然老師的程式碼有教鏡射的處理,但我剛開始沒有搞懂處理陣列的先後順序,一直Try and Error才得到想要的鏡射後再做偵測的效果。可是鏡射並不是這次專案裡面讓我卡關最久的,讓我卡了整整三天的是我自己的不小心!在處理差異偵測時,需要先擷取背景畫面,放置該畫面的TImage的Property名字是設成imBackground,而起動差異偵測程序的功能列的Property名字則設成miBackground;又剛好在建立imBackground時不小心雙擊了它,導致在程式碼產生了一個imBackgroundClick程序,而超級不小心的我就把本來應該放在miBackgroundClick程序裡的程式碼放在imBackgroundClick裡面,程式碼又沒有錯誤,最後變成編譯成功但點擊miBackgroundClick卻什麼都沒有做!而我回頭檢查程式碼時又沒有去檢查程序名字,結果這樣一個不小心的錯誤讓我Debug了三天,最後我會發現是因為突然靈機一動去雙擊miBackground功能列,才看到程序裡頭根本沒有程式碼。我學到教訓了!以後建立Property不會隨便雙擊,Debug時也會從程序名字開始小心檢查!