首页 > 其他分享 >FLASH中纯脚本制作下雪效果

FLASH中纯脚本制作下雪效果

时间:2023-09-28 11:35:54浏览次数:44  
标签:sideDisWidth sideDisHeight 下雪 中纯 FLASH snow 雪花 ._ var


做法:在第一帧中加入如下代码:
    

var sceneWidth =550;//定义场景的宽
        var sceneHeight=400;//定义场景的高
        var sideDisWidth = Stage.width/2-sceneWidth/2;//定义变量,雪花的横向位移范围
        var sideDisHeight = Stage.height/2-sceneHeight/2;//定义变量,雪花的纵向位移范围
        var snowNum = 150;//定义雪花的数量
        var snowSpace:MovieClip = _root.createEmptyMovieClip("room", 
        1);//声明一个空影片剪辑snowSpace.
        function addMasker() {//声明addMasker函数,执行两项工作.1是画外边框,2是画雪花景
           _root.createEmptyMovieClip("masker", 
        -2);//创建空影片剪辑masker,层深-2.任务是为舞台画外边框,并填充颜色
           with (masker) {//设置masker的属性。
              lineStyle(1, 0xcccccc, 100);//设置线条颜色
           beginFill(0x000000, 0);//绘制矩形闭合路径,并填充灰色,透明度为0.
              moveTo(sideDisWidth, sideDisHeight);//绘制起点
              lineTo(sideDisWidth+sceneWidth, sideDisHeight);//绘制的右上角点的位置
              lineTo(sideDisWidth+sceneWidth, 
        sideDisHeight+sceneHeight);//绘制的右下角点的位置
              lineTo(sideDisWidth, sideDisHeight+sceneHeight);//绘制的左下角点的位置
              lineTo(sideDisWidth, sideDisHeight);//绘制的左上角点的位置
              endFill();//结束绘制
           }
           createSnow();
        }
        function createSnow() {//定义一个匿名函数,完成声明一个雪花MC,雪花半径,循环画雪花
           var n = 0;//局部变量n=0
           while (n<snowNum) {//在0到150数量范围循环画雪花
              var snow:MovieClip = snowSpace.createEmptyMovieClip("s"+n, 
        n);//声明snowSpace剪辑由"s"+n个snow组成
              var radius:Number = Math.random()*3;//定义雪花半径大小
              drawSnow(snow, radius);//把snow, radius把参数传递给drawSnow函数
              n++;
           }
        }
        function drawSnow(snow:MovieClip, radius:Number) {//定义一个匿名函数,画一个雪花
           var p = radius*.9;//局部变量P,用来定义雪花大小的坐标值
           with (snow) {//设置snow这个对象的动作.画雪花圆形白色填充
              colors = [0xCCCCCC, 0xFFFFFF];//设置雪花的颜色
              alphas = [100, 100];//设置透明度
              ratios = [0, 255];//采样处的宽度的百分比
              matrix = {matrixType:"box", x:-Math.random()*2*radius, 
        y:-Math.random()*2*radius, w:2*radius, h:2*radius, 
        r:(90/180)*Math.PI};//一个变形矩阵
              beginGradientFill("radial", colors, alphas, ratios, matrix);//


设置填充色.
          

curveTo(p, -p, radius, 0);//定义点坐标,画雪花
              curveTo(p, p, 0, radius);
              curveTo(-p, p, -radius, 0);
              curveTo(-p, -p, 0, -radius);
              endFill();//结束
           }
           snowProperty(snow, sceneWidth, sceneHeight);//把参数传递给snowProperty
        }
        function snowProperty(snow, w, h) {//定义一个匿名函数,一个雪花如何下降
           snow._x = 
        sideDisWidth+Math.random()*w;//根据可编辑的宽及0和1中的任意一个数乘雪花宽计算雪花的X轴起始位置
           snow._y = 
        sideDisHeight+Math.random()*h;//根据可编辑的高及0和1中的任意一个数乘雪花高计算雪花的Y轴起始位置
           snow._rotation = 
        Math.random()*120+30;//设置旋转角度.有立体感.雪花的旋转程度为0和1中的任意一个数乘120+30
           snow.stepX = 
        Math.cos((snow._rotation*Math.PI)/180);//雪花横向位移.用计算余弦(旋转角度*常数3.14)/180)
           snow.stepY = Math.random()*2+1;//雪花纵向位移.为0和1中的任意一个数*2-1
           setInterval(snowFall, 30, snow); //每隔0.5秒调用一次,由snowFall完成
        }
        function snowFall(snow) {//定义一个匿名函数,该函数为大雪花降落位移范围
           snow._x += snow.stepX;//横向下落位移
           snow._y += snow.stepY;//纵向下落位移
           if (snow._x<sideDisWidth) {//如果横向位移不超出sideDisWidth值
              snow._x = sideDisWidth+sceneWidth;//为雪花的横坐标附值
           }
           if (snow._x>sideDisWidth+sceneWidth) { //如果雪花的横向坐标大于所附的值
              snow._x = sideDisWidth; //横向位移再回到初始点
           }
           if (snow._y>sideDisHeight+sceneHeight) {//如果雪花的纵向坐标大于所附的值
              snow._y = sideDisHeight;//纵向位移再回到初始点
           }
        }
         addMasker();

标签:sideDisWidth,sideDisHeight,下雪,中纯,FLASH,snow,雪花,._,var
From: https://blog.51cto.com/u_1040535/7637339

相关文章

  • flash调用系统时间方法
    第一种:新建一个空MC。两个动态文本框,大小要能完整显示日期和时间,并命名为t1、t2(也可以直接给文本框的变量名)。然后在空MC中写上如下语句:onClipEvent(load){//建立星期和月份数组days=newArray("星期日","星期一","星期二","星期三","星期四","星期五",......
  • Flash中fscommand中常用参数
    用法fscommand("command","parameters")参数command一个传递给宿主应用程序用于任何用途的字符串;或者一个传递给FlashPlayer的命令。parameters一个传递给宿主应用程序用于任何用途的字符串;或者一个传递给FlashPlayer的值。返回无。说明函数;使S......
  • flash拖拽命令讲解
    下面我来讲解一下拖拽命令。1、首先介绍一下开始拖拽命令的详细用法,稍后在后面的例子中进行测试。命令格式:StartDrag(要拖动的影片剪辑,[是否锁定到鼠标位置中央,左,上,右,下])或写为要拖动的影片剪辑.StartDrag([是否锁定到鼠标位置中央,左,上,右,下])命令讲解:在制......
  • flash 和 c#通信
    要实现flash与其他应用程序通信首先必需要了解flash中fscommand函数,格式为:fscommand函数可以使SWF文件与FlashPlayer或承载FlashPlayer的程序(如Web浏览器)进行通讯。还可以使用  那么怎样实现flash与C#或者是其他应用程序的通信呢,这里我以C#为例:首先在fl......
  • 今天下雪了
           2009-3-24下雪了,最近济南的天气反复无常,时冷时热,就当大家都以为冬天彻底的过去时,天空却偏偏飘起了雪花,温度骤然下降,天空是那么的凄凉,忙忙碌碌的人,谁会在意天气!        衣服吧,就不想在添了,太麻烦了!!!!!!!!!!!!......
  • FlashDuty Changelog 2023-09-21 | 自定义字段和开发者中心
    FlashDuty:一站式告警响应平台,前往此地址免费体验!自定义字段FlashDuty已支持接入大部分常见的告警系统,我们将推送内容中的大部分信息放到了Lables进行展示。尽管如此,我们用户还是会有一些扩展或定制性的需求,比如人工标记一个故障是否为误报。因此我们提供了自定义字段功能,......
  • FlashDuty Changelog 2023-09-07 | 新增深色模式与主题配置
    FlashDuty:一站式告警响应平台,前往此地址免费体验!FlashDuty现在已经全面支持了深色模式,这为您提供了更柔和的光线和舒适的界面外观。并且,您可以根据自己的喜好和使用环境动态切换深色和浅色模式与主题,提高使用体验的个性化和灵活性。深色模式效果预览为了确保在深色模式下......
  • FlashDuty Changelog 2023-09-07 | 新增深色模式与主题配置
    FlashDuty:一站式告警响应平台,前往此地址免费体验!FlashDuty现在已经全面支持了深色模式,这为您提供了更柔和的光线和舒适的界面外观。并且,您可以根据自己的喜好和使用环境动态切换深色和浅色模式与主题,提高使用体验的个性化和灵活性。深色模式效果预览为了确保在深色模式下能够呈现......
  • FlashDuty Changelog 2023-09-21 | 自定义字段和开发者中心
    FlashDuty:一站式告警响应平台,前往此地址免费体验!自定义字段FlashDuty已支持接入大部分常见的告警系统,我们将推送内容中的大部分信息放到了Lables进行展示。尽管如此,我们用户还是会有一些扩展或定制性的需求,比如人工标记一个故障是否为误报。因此我们提供了自定义字段功能,来进一......
  • flash上加htm链接的技巧
    flash不能直接加htm链接或者javascript事件。所以说在一个flash动画添加链接一般都是将链接直接做到flash中去。但是有的时候我们的链接都是活的。而且希望这个flash具有通用的用途。这时候如果将链接做死到flash中,对于重用这个flash就带来了很多不便。后来发现,可以通过添加一......