原本書上的範例是給你十個坐標點,然後用display.newLine的方式去吧線段畫出來,而因為display.newLine只能畫單一線條,所以要再用append{}來把所有的線段接起來變成一個五角星形,然後我就在想,實務上如果每次都要去找出這十個點來不是很浪費時間嗎?為什麼不直接寫個函式去產生要的多邊形,然後就開始在研究正多邊形的一堆數學,然後又對芒星類形的畫法感到興趣,所以也一併做了不少研究,反正我試了一堆算法,有些可以做到有些則是做不到,心得大概是:
1.我發現有display.newPolygon這個API,只要把十個座標點丟進去就可以幫你畫出一個多邊形來,結果書上卻只教人一條線一條線的接起來?
2.display.newPolygon無法處理有交叉線段的多邊形,可以畫出圖形,但是只有線條,而且會出現警告
3.採用display.newLine接起來的多邊形,基本上還是一個線段物件,所以它的軸心是以第一個線段來定義的,旋轉之類的也是在線段基礎上,這意味著我用線段接起來的多邊形在旋轉時,並不是以多邊形的中心來旋轉,而是以第一個畫出來的邊線段來旋轉
4.我想過一些比較變態的方式要來解決我遇到的問題,不過後來都算了,只是練習而己,不要搞得太複雜
5.使用display.newPolygon時,它並不會照著你給的頂點座標去定位多邊形,而是以你給的第一組位置坐標做為多邊形的軸心,然後以這個軸心為中心去重新定位各點的置,簡單來說,你提供的各頂點坐標只是一個相對參考值,corona會自己再去算出一個新的頂點坐標來畫多邊形
6.我有試著用Group的方式來組織多個多邊形,但這會讓最後的引用變的麻煩,比如你得用group[i]的方式去一個一個改變group中的物件的屬性。
7.lua 語法沒有switch case的概念,只能用if...elseif..end或利用table的特形來達到類似switch case的使用
最後我寫了一個可以產生三種正多邊形(正多邊形,正星形,正芒星)的函式來用,比如書上的範例自然是豐富許多,也初步掌握了corona SDK及lua言法的一些特性。