iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Mobile Development

用Flutter Flame做遊戲!Live!系列 第 18

(週末) Canvas.clip的例子

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20240928/2013049665qmNjOtZ2.png

這兩顆彩色的球就是使用Canvas.clip做出來的。


  List<Color> colors = [
    Colors.white, Colors.green, Colors.greenAccent, Colors.cyanAccent, Colors.white38, Colors.lightBlueAccent, Colors.yellowAccent, Colors.pinkAccent, Colors.purpleAccent
  ];

  @override
  void paint(Canvas canvas, Size size) {

    Path path = Path();
    path.addOval(Rect.fromCircle(center: Offset(0, 0), radius: radius));
    canvas.clipPath(path);

    Paint p = Paint();
    for(double i = 0 ; i < radius*2 ; i+= 0.25){
      p.color = colors[(i*4).toInt() % colors.length];
      canvas.drawCircle(Offset(0, i), radius, p);
    }


  }

首先是設定一個「色層」的矩陣。
然後在render中,先是設定一個圓形的切割區域(Path和Canvas.clipPath),接著就是用基本的矩陣去疊一層層的顏色上去。

這套技巧變化一下可以還做出很多效果。


上一篇
Path和Canvas.clip
下一篇
Drag和Contact相衝突嗎?
系列文
用Flutter Flame做遊戲!Live!26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言