您当前的位置:首页 > 电脑百科 > 程序开发 > 开源程序 > 源码

Zerker 一个简单又灵活的 flutter canvas 图形动画库

时间:2022-02-11 10:43:42  来源:  作者:GitHub精选

《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个简单又灵活的 flutter canvas 图形动画库Zerker。

Zerker 一个简单又灵活的 flutter canvas 图形动画库

 

项目介绍

Zerker 是一个灵活、轻量级的颤动画布图形动画库。

使用Zerker,你可以制作很多看似繁琐的动画效果,比如动画动画、弹窗动画、场景转场、图标效果等等。

同时,您可以使用 Zerker 创建很多简单的游戏。Zerker 包含精灵、滚动背景和地图集等元素,可以轻松使用它们创建游戏世界。

安装

将此包用作依赖库

将此添加到包的 pubspec.yaml 文件中:

dependencies:
  zerker: <latest_version_here>

您可以从命令行安装软件包:使用 Flutter:

$ flutter pub get

或者,您的编辑器可能支持 flutter pub get。

现在在您的 Dart 代码中,您可以使用:

import 'package:zerker/zerker.dart';
Zerker 一个简单又灵活的 flutter canvas 图形动画库

 

快速开始

导入包

import 'package:zerker/zerker.dart';

创建 zerker 小部件

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        AppBar: AppBar(
          title: Text(widget.title),
        ),
        body: Center(
          child: Zerker(app: MyZKApp(), clip: true, interactive: true, width: 350, height: 350),
        ));
  }
}

创建从 ZKApp 继承的 Zerker 类

class MyZKApp extends ZKApp {

  @override
  init() {
    super.init();
    /// init zerker scene
  }

  @override
  update(int time) {
    super.update(time);
  }
}

初始化场景并在init function

/// Create a zerker sprite
ZKSprite bigboy = ZKSprite(key: "bigboy")
  ..position.x = size.width / 2
  ..position.y = size.height / 2
  ..animator.make("front", [0, 1, 2, 3, 4])
  ..animator.make("left", ['5-9'])
  ..animator.make("after", ['10-14'])
  ..animator.make("right", ['15-19'])
  ..onTapDown = (event) {
    bigboy.animator.play("right", 8, true);
   };
   
stage.addChild(bigboy);

/// Create a zerker text
ZKText text = ZKText()
  ..setPosition(100, 100)
  ..text = "hello world"
  ..setStyle(color: Colors.blueGrey, backgroundColor: Colors.red[50]);
  
stage.addChild(_text);

开始一个简单的演示

Zerker 一个简单又灵活的 flutter canvas 图形动画库

 

第一步是创建一个zerker小部件

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text(widget.title),
        ),
        body: Center(
          child: Zerker(app: MyZKApp(), clip: true, interactive: true, width: 350, height: 350),
        ));
  }
}

第二步继承自ZKApp

class MyZKApp extends ZKApp {

第三步在init函数中预加载资产

init() {
    super.init();
    stage.color = Colors.blueGrey;

    Map<String, dynamic> urls = {
      "boy": {"json": "assets/boy.json", "image": "assets/boy.png"},
      "bg": "assets/bg.png",
    };

    // preload all assets
    ZKAssets.preload(
        urls: urls,
        onProgress: (scale) {
          print("Assets loading ${scale * 100}%");
        },
        onLoad: () {
          initScene();
          _loaded = true;
          print("Assets load Complete");
        });
}

第四步创建各种元素

    // add title
    title = ZKText()
      ..position.x = appWidth / 2
      ..position.y = 20
      ..text = "Please click anywhere"
      ..setStyle(
        color: Colors.blueGrey, 
        backgroundColor: Colors.greenAccent, 
        textAlign: TextAlign.center);
    stage.addChild(title);

    // add boy
    boy = ZKSprite(key: "boy")
      ..setScale(1)
      ..anchor.y = 1
      ..position.x = size.width / 2
      ..position.y = appHeight - 16
      ..animator.make("run", ["Run ({1-15}).png"])
      ..animator.make("jump", ["Jump ({1-15}).png"])
      ..animator.make("dead", ["Dead ({1-15}).png"])
      ..animator.play("run", 25, true);
    stage.addChild(boy);
Zerker 一个简单又灵活的 flutter canvas 图形动画库

 

第五步添加互动事件

_addAction() {
    boy.onTapDown = (event) {
      bg.stop();
      _jumping = false;
      boy.animator.play("dead", 20);
    };

    stage.onTapDown = (event) {
      if (event.target == boy) return;
      if (_jumping) return;

      bg.play();
      _jumping = true;
      boy.animator.play("jump", 20);
      ZKTween(boy)
          .to({"y": appHeight - 120}, 500)
          .easing(Ease.circ.easeout)
          .chain(ZKTween(boy).to({"y": appHeight - 16}, 500).easing(Ease.circ.easeIn).onComplete((obj) {
                boy.animator.play("run", 25, true);
                _jumping = false;
              }))
          .start();
    };
}

更多内容:https://gitee.com/mirrors/zerker



Tags:Zerker   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个简单又灵活的 flutter canvas 图形动画库Zerker...【详细内容】
2022-02-11  Tags: Zerker  点击:(0)  评论:(0)  加入收藏
▌简易百科推荐
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个简单又灵活的 flutter canvas 图形动画库Zerker...【详细内容】
2022-02-11  GitHub精选    Tags:Zerker   点击:(0)  评论:(0)  加入收藏
1、服务器系统配置初始化#/bin/bash# 安装系统性能分析工具及其他yum install gcc make autoconf vim sysstat net-tools iostat iftop iotp wget lrzsz lsof unzip openssh...【详细内容】
2022-02-08  呆萌小可萘日常    Tags:shell 脚本   点击:(9)  评论:(0)  加入收藏
奇虎360 1.MySQL中间层 AtlasAtlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基础...【详细内容】
2022-02-07  linux上的码农    Tags:开源项目   点击:(8)  评论:(0)  加入收藏
定时任务,是在日常开发需求中总会遇到的,我们往往会有一些简单的脚本工作,希望能够每小时或每天执行一次。当这类需求变得多起来后,这些零散的任务脚本就会变得难以管理,尤其是它...【详细内容】
2022-02-07  每日开源代码    Tags:QingLong   点击:(51)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条