正在加载...

一个困扰了我很久的问题
(已经解决,thanks to Flash8,用到遮罩+cacheAsBitmap)
此外推荐gotoAndLearn的视频教程,你看了就明白了,英文解说,但是没有太大难度,跟着看就行了。

如何实现一个效果,能够让遮罩完全的透明渐变。

由于遮罩层本身的局限性,我们(至少我个人)做透明遮罩的时候一般都是用一块渐变的矩形来覆盖住被遮罩的图形,如下:

当把背景变为白色(上例背景为黑)之后,就可以有半透明的效果了:

可是如果背景不是简单的白色,而是多种颜色,甚至是复杂的图片,这种方法就原形毕露了:

不知道哪位大哥有好的方法,望能告知,请留言在下面,不用注册。

还没找到您要的东西?Google试试看吧,
Google更注重原创、时效性好的文章:


本文相关评论: 才 5 条评论
  1. fdf 2005-02-11 05:48:44

    广告,屏蔽

  2. aw 2005-02-12 12:39:21

    这样拉点击率……呵呵

  3. woniu 2005-02-28 01:13:48

    //All by woniu-2005/2/28
    //实际上就是模拟FLASH中柔化填充边缘命令
    //用setMask();来实现,占用CPU很少(查看进程,CPU项基本上为00)
    //p为要产生渐变的剪辑实例名,其注册点必须在左上角(很重要),即剪辑中的图形的_x,_y必须都为0

    d_t=30;//上下左右的渐变距离
    d_b=30;
    d_l=30;
    d_r=30;
    n=20;//渐变层次,越大则渐变越真实
    //改变以上各值,可实现多种效果
    xa=p._x;
    ya=p._y;
    xc=xa+p._width;
    yc=ya+p._height;
    a_t=d_t/n;//根据渐变距离和渐变层次得出每一个渐变厚度
    a_b=d_b/n;
    a_l=d_l/n;
    a_r=d_r/n;

    for(i=0;i<n;i++)
    {
      p.duplicateMovieClip("p"+i,i);//复制剪辑,并使其透明度递变
      this["p"+i]._alpha=100/n*(i+1);
      //绘出用于遮蔽的区域
      this.cr&#101;ateEmptyMovieClip("pm"+i,i+n);
      with(this["pm"+i])
      {
        beginFill(0xff0000,10);
        moveTo(xa+a_l*i,ya+a_t*i);
        lineTo(xa+a_l*i,yc-a_b*i);
        lineTo(xc-a_r*i,yc-a_b*i);
        lineTo(xc-a_r*i,ya+a_t*i);
        endFill();
      }
      this["p"+i].setMask(this["pm"+i]);//遮蔽
      p.unloadMovie();//卸载p
    }

  4. wondger 2007-03-30 05:08:35

    恩,我最近也被这个问题困扰,不得已,放弃了~““

  5. wondger 2007-03-30 05:11:56

    能否告之解决办法~“`

[支持Ctrl+Enter]为了我们大家和家人的安全,留言请慎重!
声明:
1、本站仅与见过面的个人博客交换链接,见此文
2、留言时的头像是Gravatar提供的服务。如果您有兴趣并且有闲暇时间,可以看看这里的介绍