91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

庄浪县| 吴忠市| 乌审旗| 博白县| 永泰县| 波密县| 南平市| 遵义市| 夹江县| 封开县| 孙吴县| 吉首市| 泰宁县| 鹿泉市| 南江县| 沂南县| 澎湖县| 成武县| 塘沽区| 渝中区| 井研县| 河北省| 应城市| 麟游县| 延吉市| 鄢陵县| 北海市| 金沙县| 桑植县| 惠来县| 荣成市| 明光市| 丰城市| 宝山区| 霍城县| 神木县| 揭东县| 呼伦贝尔市| 临颍县| 西吉县| 扶余县|