差點忘了主題應該是「用向量繪圖做遊戲」,而不是「研究物理引擎」。
雖然要做遊戲,遊戲引擎的特性也是不得不接觸的東西,但還是回來著重在繪圖上吧!
今天要畫的東西比較急就章,重點在「使用同樣的框架」。
class RectPainter extends CustomPainter{
double radius = 5;
RectPainter(this.radius);
Offset center = Offset(0,0);
setRadius(double radius){
this.radius = radius;
}
@override
void paint(Canvas canvas, Size size) {
// 計算正方形的邊長
double side = radius * 1.414;
// 創建一個Rect對象
Rect rect = Rect.fromLTWH(-side/2, -side/2, side, side);
// 繪製正方形
canvas.drawRect(rect, Paint()..color = Colors.black);
}
@override
bool shouldRepaint(RectPainter oldDelegate) {
return true;
}
}
然後再次修改/擴充「Ball」。
render(Canvas canvas) {
super.render(canvas);
if(paintType == 0)
flowerPainter.paint(canvas, Size(radius*1.8, radius*1.8));
else
rectPainter.paint(canvas, Size(radius, radius));
}
這樣做的目的同時是要測試這套物理引擎的極限。
隨著繪圖種類的增加,是否會降低動畫的效率。
但現在還沒有達到「測試」的目的,畢竟只是增加一種,而且還不是很複雜的繪畫,嚴格講起來還變簡單了。
另外,如果可以,應該要使用同一套參數給「paint」函數,而不是其中一個要用「乘以1.8」這樣的處理。