中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

基于Flutter怎么制作一個火箭發射動畫

發布時間:2022-03-23 17:47:03 來源:億速云 閱讀:146 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“基于Flutter怎么制作一個火箭發射動畫”,內容詳細,步驟清晰,細節處理妥當,希望這篇“基于Flutter怎么制作一個火箭發射動畫”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

AnimatedPositioned介紹

AnimatedPositioned組件的使用方式其實和 AnimatedContainer 類似。只是AnimatedPositionedPositioned 組件的替代。構造方法定義如下:

const AnimatedPositioned({
    Key? key,
    required this.child,
    this.left,
    this.top,
    this.right,
    this.bottom,
    this.width,
    this.height,
    Curve curve = Curves.linear,
    required Duration duration,
    VoidCallback? onEnd,
  })

前面的參數和 Positioned 一樣,后面是動畫控制參數,這些參數的定義和 AnimatedContainer 的是一樣的:

  • curve:動畫效果曲線;

  • duration:動畫時長;

  • onEnd:動畫結束后回調。

我們可以改變 lefttopwidth等參數來實現動畫過渡的效果。比如我們的火箭發射,就是修改 bottom (飛行高度控制)和 width (尺寸大小控制)來實現的。

火箭發射動畫實現

有了上面的兩個分析,火箭發射動畫就簡單了!完整代碼如下:

class RocketLaunch extends StatefulWidget {
  RocketLaunch({Key? key}) : super(key: key);

  @override
  _RocketLaunchState createState() => _RocketLaunchState();
}

class _RocketLaunchState extends State<RocketLaunch> {
  var rocketBottom = -80.0;
  var rocketWidth = 160.0;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('火箭發射'),
        brightness: Brightness.dark,
        backgroundColor: Colors.black,
      ),
      backgroundColor: Colors.black,
      body: Center(
        child: Stack(
          alignment: Alignment.bottomCenter,
          children: [
            Image.asset(
              'images/earth.jpeg',
              height: double.infinity,
              fit: BoxFit.fill,
            ),
            AnimatedPositioned(
              child: Image.asset(
                'images/rocket.png',
                fit: BoxFit.fitWidth,
              ),
              bottom: rocketBottom,
              width: rocketWidth,
              duration: Duration(seconds: 5),
              curve: Curves.easeInCubic,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        child: Text(
          '發射',
          style: TextStyle(
            color: Colors.white,
          ),
          textAlign: TextAlign.center,
        ),
        onPressed: () {
          setState(() {
            rocketBottom = MediaQuery.of(context).size.height;
            rocketWidth = 40.0;
          });
        },
      ),
    );
  }
}

其中一開始設置 bottom 為負值,是為了隱藏火箭的焰火,這樣會更有感覺一些。然后就是在點擊發射按鈕的時候,通過 setState 更改底部距離和火箭尺寸就可以搞定了。

讀到這里,這篇“基于Flutter怎么制作一個火箭發射動畫”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜山县| 德化县| 宜阳县| 木兰县| 武汉市| 洛浦县| 临清市| 大兴区| 开江县| 满洲里市| 泽州县| 苍山县| 车险| 通辽市| 兰溪市| 临颍县| 丹寨县| 佛冈县| 新龙县| 贵阳市| 怀安县| 伊金霍洛旗| 郸城县| 裕民县| 东乡族自治县| 镇江市| 云和县| 津南区| 晴隆县| 永城市| 望都县| 雅江县| 龙江县| 合水县| 吉安市| 特克斯县| 武胜县| 新竹市| 唐河县| 丽江市| 秦皇岛市|