Flash动画的“遮丑”研究

2008-04-02 11:02:40来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折


  长久以来,我们在制作动画的时候很少关心“遮丑”问题,一至于有些看起来制作挺好的作品,在发布的时候因为画面的宽度超过了影片的宽度而使场景外的东西在发布的网页或说是播放的影片中展露出来,会使您感觉束手无策。一个小问题就上升到了一个引起关注的程度上来,自然在网络中,就有人写出了这方面的文章,加以研究,高手也都会用“遮丑”把自己不想展露的东西遮挡起来,可是有些时候普通制作的“遮丑”也不是完万能起作用.

  为什么会出现这样的问题?在这里我要多说几句,希望大家不要嫌烦!我们知道,FLASH动画是基于时间轴的线性动画,而时间轴上有图层,这样就会出现一个图层的级别问题,也就是我们常说的深度的问题,上面的图层总是覆盖住下面的图层,直接的说,就是深度值大的图层遮盖深度值小的图层,而在flash中又规定了脚本的层级深度高于任何级别的场景中非脚本创建的影片层级深度,所以上面大家看到的下雨是我用脚本创建的一个下雨的效果,而遮丑是我用手工拖入到场景一个影片剪辑,这样根据脚本的深度级别高于非脚本创建的影片剪辑深度级别,自然就会使“遮丑”失效,因为下雨的深度高于用于“遮丑”影片剪辑的深度。如何解决“遮丑”失灵的问题呢?下面我来谈谈这方面的问题。

  我们知道在FLASH脚本中,我所接触到的涉及到深度的命令只有三个(我只是说我所接触到的)duplicateMovie();,attachMovie();,createEmptyMovie();分别是复制影片剪辑命令,创建位于库中的影片剪辑,创建空的影片剪辑。而这三个命令的层级深度是在一个级别上的,也是处于最高级别上的,所以这就给我们实现任何情况下都能实现“遮丑”提供了可能,我的思路是,用普通的方法创建一个“遮丑”影片剪辑,然后利用脚本调用,然后配置其深度,这样就会避免出现上面出现的问题了,而用脚本控制最好的方法就是实现直接用脚本调用位于库中的影片剪辑,就是用attachMovie();这个命令,下面我们看代码:

  

  _root.onLoad = function() {

  attachMovie("zedang", "zedang", 10000);

  this.zedang._x = Stage.width/2;

  this.zedang._y = Stage.height/2;

  };

  其中zedang是我制作的“遮丑”影片剪辑的链接名,影片剪辑的注册点在中央,在主场景中调用是让其位于场景中央,所以我用了this.zedang._x = Stage.width/2;this.zedang._y = Stage.height/2;这样不管您场景配置多大,都会确保这个“遮丑”位于场景的中央,深度我随便配置为10000,我想您作一个影片不会有一万多个图层吧,哈,这个假如您确实是图层多,这里能够配置为10000000,也不是不能够的,这个脚本确保了在任何情况下都会把您的“丑”遮住的,不信?试试,下面我把源文档公开出来,大家能够下载研究,也能够提出不同意见,我的想法也可能不成熟,但是感觉还是不错的,在这里大家不要见笑哟。下面是我制作的完整的下遮丑效果及下雨的代码脚本。

  

  
“遮丑”效果


  

  _root.onLoad = function() {

  Num = 200;

  attachMovie("zedang", "zedang", 10000);

  this.zedang._x = Stage.width/2;

  this.zedang._y = Stage.height/2;

  for (var i = 0; i attachMovie("yu", "yu" i, i);

  _root["yu" i]._x = Math.floor(Math.random()*500);

  _root["yu" i]._y = Math.floor(Math.random()*400);

  _root["yu" i]._rotation = -32;

  _root["yu" i]._alpha = Math.floor(Math.random()*i);

  _root["yu" i]._xscale = _root["yu" i]._yscale=25;

  _root["su" i] = (3 i/Num);

  }

  };

  this.onEnterFrame = function() {

  for (var k = 0; k this["yu" k]._x = _root["su" k];

  this["yu" k]._y = _root["su" k];

  if (this["yu" k]._x>500) {

  this["yu" k]._x = 0;

  }

  if (this["yu" k]._y>400) {

  this["yu" k]._y = 0;

  }

  }

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: Flash脚本的执行顺序

下一篇: Flash中背景跟随时间变化