亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

基于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

泽普县| 密山市| 武穴市| 夏河县| 本溪市| 盘山县| 罗城| 道真| 湘乡市| 闵行区| 三亚市| 阳江市| 长治市| 太仓市| 安仁县| 安康市| 文水县| 石台县| 锦屏县| 和政县| 紫云| 四平市| 华安县| 西林县| 荥经县| 罗平县| 陆良县| 宁阳县| 黄山市| 凌源市| 昌图县| 山西省| 攀枝花市| 富平县| 大姚县| 嵊泗县| 枝江市| 威信县| 龙泉市| 凤翔县| 常熟市|