博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Flutter中的3D透视效果
阅读量:6036 次
发布时间:2019-06-20

本文共 1788 字,大约阅读时间需要 5 分钟。

最近通过一篇学习了Flutter中的3D透视效果。

效果是跟随手指的触摸,界面做3D转动。

// v2: add Gesture detectorimport 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget {  @override  Widget build(BuildContext context) {    return MaterialApp(      title: 'Perspective',      theme: ThemeData(        primarySwatch: Colors.blue,      ),      home: MyHomePage(),    );  }}class MyHomePage extends StatefulWidget {  MyHomePage({Key key}) : super(key: key); // changed  @override  _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State
{ Offset _offset = Offset.zero; // changed @override Widget build(BuildContext context) { return Transform( // Transform widget transform: Matrix4.identity() //生成一个单位矩阵 ..setEntry(3, 2, 0.001) // 透视 ..rotateX(0.01 * _offset.dy) // changed ..rotateY(-0.01 * _offset.dx), // changed alignment: FractionalOffset.center, child: GestureDetector( // new onPanUpdate: (details) => setState(() => _offset += details.delta), //与屏幕接触并移动的指针再次移动 onDoubleTap: () => setState(() => _offset = Offset.zero), child: _defaultApp(context), )); } _defaultApp(BuildContext context) { return Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text( '3D效果', ), ], ), ), ); }}复制代码

主要用到了TransformTransform是用来做矩阵变换的。

首先通过Matrix4.identity()来生成一个单位矩阵。然后通过..setEntry(3, 2, 0.001)来将矩阵的第3行第2列设置为0.001。作用是类似设置物体到摄像机的距离,越远物体看起来越小,越近看起来物体越大。

..rotateX..rotateY是分别修改XY轴的数值,这里乘0.01是做了一个数值压缩。(因为是以Z轴为轴做旋转,所以改变的是X和Y轴的值,Z轴是垂直于屏幕方向的轴)。

最后通过GestureDetector部件获取手指移动的距离,并添加双击复位操作。

转载地址:http://ijlhx.baihongyu.com/

你可能感兴趣的文章
检测点1.1
查看>>
android--------阿里 AndFix 热修复
查看>>
control.add()
查看>>
Sublime text3中配置Github
查看>>
备份软件 FreeFileSync 怎么用
查看>>
Asp.net,C# 加密解密字符串
查看>>
网页视频播放器插件源码
查看>>
CentOS7 睡眠 休眠 关机 电源
查看>>
SqlServer里DateTime转字符串
查看>>
2019-4-23 plan
查看>>
固定弹层叉掉
查看>>
[编解码] 关于base64编码的原理及实现
查看>>
WinDbg配置和使用基础
查看>>
转:Object-Runtime的基本数据类型
查看>>
JMJS系统总结系列----Jquery分页扩展库(五)
查看>>
Excel技巧之——英文大小写转换(转)
查看>>
Google 翻译的妙用
查看>>
算法导论--python--插入排序
查看>>
Hydra用户手册
查看>>
常用的集合
查看>>