为什么使用Flutter
Flutter 是 Google 开源的 UI 工具包,帮助开发者通过一套代码库高效构建多平台精美应用,支持移动、Web、桌面和嵌入式平台。Flutter 开源、免费,拥有宽松的开源协议,适合商业项目。(摘自百度百科)
个人最看重的Flutter几个优点是跨平台,运行效率高,开发效率高。
- Flutter支持开发安卓,ios移动客户端软件,支持开发web,支持开发windows,macOS,Linux等桌面软件。
- Flutter在Android上会编译为原生二进制so库,运行效率高。没有像RN或weex那样将javascript解释执行的过程。
- 开发时支持热重载,代码保存后,1秒内即可在手机端预览到修改后的效果,非常高效,再也不用改一行代码,编译两分钟等着看效果了。
基于Flutter以上几个优点,Flutter能够解决我工作开发过程中的一些痛点问题,开发效率低,完整构建项目耗时长(项目已进行了模块化,新功能构建时间可以接受,但是老代码未完全模块化,完整构建非常耗时),项目展示股票行情数据,涉及到非常多界面元素的频繁更新,已进行了多方面的优化,但是在几年前的低端机上体验还需要优化,相信Flutter能带来更好的性能表现。
本人目前也在学习摸索中,用Flutter写一个游戏练练手。
项目github地址:
https://github.com/chenyuebo/FlutterWechatPlaneFightGame
项目目前还存在诸多问题,欢迎大家批评指正,大家一起进步提高。
运行截图
游戏实现
游戏主循环使用定时器Timer实现。
定义了Sprite类,即精灵类,游戏中的飞机、子弹、奖励道具等都是继承自该类,我们通过moveTo()、move()等方法控制精灵的位置,通过update()更新sprite的状态,通过getRenderWidget()返回对应的视图widget,利用Flutter对widget高效的管理,绘图没有采用自绘的方式,而是直接使用了Flutter中的Widget,在游戏中通过不停的改变widget的位置模拟出运动的情况。精灵类及其子类继承如下所示:
注:
游戏实现参考了:https://github.com/iSpring/GamePlane