flash特效原理:倒影效果

   其实这个倒影类已经不是新鲜的事情,不过有时候很多情况不适合自己做特效,所以拿了一个修改一下。因为我们加载的图片,在默认的情况下使用容器装都在注册点都在左上角,但是大部分情况,我们注册点在中心或者底部会符合我们做特效的特点。于是根据这些情况进行倒影判断有时候有必要的。

 

  所以修改了一个倒影类。

 

  倒影的其中一个特点:使用渐变填充的办法(beginGradientFill)构建这个倒影效果。当中使用到一些矩阵,一些遮罩,一些位图复制的做法。虽然遮罩这种做法已经有很多情况适应,不过渐变填充是一项比较消耗资源的计算,因此倒影类有时候会出现吃资源的状况,这一点需要注意。 同时注意到(cacheAsBitmap这个玩意使用的时候也是比较消耗内存的

 

  还有第二种方式:使用位图做法,先实验倒影,然后再复制成一张位图。这种可以算是非主流的做法。不知道好不好玩呢,有空再去尝试一下制作。

 

 还可以实验其他方式优化,有空可以尝试一下制作。

 

渐变填充:

   reflectionMask.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);

   使用渐变填充的时候,需要填入几个参数才会有效果发生。因为这个几个参数模式在官方帮助文档有充分的说明,可以参考这个

在使用渐变填充的时候,其中矩阵的使用是个比较好玩的地方,使用矩阵可以改变填充的方向,如果有更多的需求的时候,可以对矩阵这个参数进行研究一番。

  

    在平时的时候,我们创建一个元件的时候,flash会提供一个对齐方式给我们选择,默认的情况是在左上角,但是有时候我们需要改变这种对齐方式选择中心点位置 或者其他,这样一来会方便我们制作特效的。在实验的过程当中,我发现很多图片墙效果所需要图片都在中心位置。故此在使用倒影类的时候,可以恰当根据这几种情况定制我们所需要的方式。

 

如:

  左上角位置:

  中心:

  中心点下面:

 所以这样一来,倒影图片位置就可能出现多种情况。所以根据这些选择来改变倒影的图片的位置。有时候会适合自己的方式制作。

 

 

 

 

 

测试:根据不同的注册点创建。

 

 

  • 0
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
要实现图片的倒影效果,可以使用CSS中的 transform 和 gradient 属性。 首先,在 HTML 中添加一个包含图片的容器,例如: ```html <div class="image-container"> <img src="your-image-url" alt="your-image"> </div> ``` 然后,在 CSS 中设置容器的样式,包括宽度、高度、相对定位和背景颜色: ```css .image-container { position: relative; width: 300px; height: 300px; background-color: #f2f2f2; } ``` 接着,使用伪元素 `::before` 创建一个半透明的黑色遮罩层,并通过 transform 属性将其翻转: ```css .image-container::before { content: ""; position: absolute; top: 100%; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8)); transform: scaleY(-1); transform-origin: bottom; } ``` 这里使用了渐变色来实现遮罩层的透明度渐变,从上到下逐渐变为全透明。同时,通过 transform: scaleY(-1) 和 transform-origin: bottom 来将遮罩层垂直翻转,并以底部为轴心进行翻转。 最后,将图片相对于容器进行绝对定位,并设置 z-index 属性使其在遮罩层之上: ```css .image-container img { position: absolute; top: 0; left: 0; z-index: 1; } ``` 完成以上步骤后,就可以实现图片的倒影效果了。完整代码如下: ```html <div class="image-container"> <img src="your-image-url" alt="your-image"> </div> ``` ```css .image-container { position: relative; width: 300px; height: 300px; background-color: #f2f2f2; } .image-container::before { content: ""; position: absolute; top: 100%; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8)); transform: scaleY(-1); transform-origin: bottom; } .image-container img { position: absolute; top: 0; left: 0; z-index: 1; } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值