Flutter 實現酷炫的3D效果

2021-10-08 10:25:53 字數 4283 閱讀 4884

下面是要實現的效果:

flutter 中3d效果是通過transform元件實現的,沒有變換效果的實現:

通過gesturedetector元件新增滑動事件監聽:

@override

widget build(buildcontext context) ,

child: container(

alignment: alignment.center,

color: colors.white,

child: text('3d 變換demo'),

),),);}

新增transform對元件進入旋**

@override

widget build(buildcontext context) ,

child: container(

alignment: alignment.center,

color: colors.white,

child: text('3d 變換demo'),

將滑動的偏移和旋轉進行關聯:

class transformdemo extends statefulwidget 

class _transformdemostate extends state);

},child: container(

alignment: alignment.center,

color: colors.white,

child: text('3d 變換demo'),

基本已經實現了3d效果,但效果比較生硬,尤其垂直方向旋轉的時候遠點和近點在螢幕上的寬度是一樣,

新增近大遠小的效果:

上面的效果類似於翻書的效果。

實現的原理:

將左右切割為兩部分,兩張共分割為4個新的元件,如下圖,分別為1、2、3、4

**實現:

_child1 = cliprect(

child: align(

alignment: alignment.centerleft,

widthfactor: 0.5,

child: child1,

),);_child2 = cliprect(

child: align(

alignment: alignment.centerright,

widthfactor: 0.5,

child: child1,

),);_child3 = cliprect(

child: align(

alignment: alignment.centerleft,

widthfactor: 0.5,

child: child2,

),);_child4 = cliprect(

child: align(

alignment: alignment.centerright,

widthfactor: 0.5,

child: child2,

),);

將第一張放在第二種的上面,先旋轉元件2從 0度到 90度,然後再旋轉元件3從 -90度到0度,**實現:

row(

mainaxisalignment: mainaxisalignment.center,

children: [

stack(

children: [

_child1,

transform(

alignment: alignment.centerright,

transform: matrix4.identity()

..setentry(3, 2, 0.001)

..rotatey(_animation1.value),

child: _child3,

),],

),container(

width: 3,

color: colors.white,

),stack(

children: [

_child4,

transform(

alignment: alignment.centerleft,

transform: matrix4.identity()

..setentry(3, 2, 0.001)

..rotatey(_animation.value),

child: _child2,)],

)],)

動畫控制器設定:

最後生成的效果就是開始的翻書效果。

上面是左右翻頁效果,同理換成上下翻頁效果:

CSS高階 試試酷炫的 3D 視角

寫這篇文章的緣由是因為看到了這個頁面 運用 css3 完成的 3d 視角,雖然有一些暈3d,但是使人置身於其中的互動體驗感覺非常棒,運用在移動端製作一些 h5 頁面可謂十分博人眼球。並且掌握原理之後製作起來也並不算廢力,好好的研究了一番後將一些學習過程共享給大家。百聞不如一見,先直觀感受一下上述我所...

小炫酷的3D旋轉立方體相簿

前言 今年是特別的一年,是特別宅的一年,大家都宅在家做貢獻。在這個逆戰時期,讓我們發揮逆戰精神,一起來敲 吧!正文 今天,我們來做乙個有點小炫酷的3d旋轉立方體相簿。那麼首先,讓我們來了解一下3d。屬性 perspective 景深 近大遠小 是觀察物體的乙個視角距離,距離越小效果越明顯,它的數值一...

jquery實現tagcloud,帶3d效果。

寫網頁時可能遇到要將一堆東西列出來的情況,比如姓名啊,標籤啊等等 如果僵硬的列出來感覺很彆扭,因為往往你要列出來的東西很多 直觀,明了 你又不想去寫另外乙個html。我就遇到了這樣的問題。想想用滾動吧,滾動起來效果也不是很好。在高人指點下,了解到還有tagcloud 標籤雲 這類東西。網上一搜,發現...