闪光灯飘落的雪花随机函数和影片剪辑
时间:2012-12-26 16:10来源:卓想动画http://www.zxgzs.com 作者:QQ:610929375 点击: 次
有许多不同的方式在Flash制作中创建的降雪,一些比别人更多的困难。 我们将使用Math.random()的另一个函数的数学对象的数学。黄大仙功能,建立在随机的地方的雪,落在与自然和漂移后,一个正弦函数的路径曲线。
您可以创建您的雪之前或之后创建你的场景的休息,但我已经开始通过建立一个简单的背景下,雪沙丘反对另外一种黑暗梯度的天空,像素的一个550wx400h阶段。
在一个新的图层,绘制一个单独的斑点或片状雪,你可以使用椭圆工具创建一个简单的小的,圆的印迹雪,或画一个更传统的六针对性的雪花形状。 问题的关键是,你只需要绘制一个,我们要使用动作脚本复制雪花和改变它的特点。
但首先,让我们的脚本来控制单个雪花的随机运动路径和特点。 选择的雪花影片剪辑,然后右键单击,然后单击“ 操作”,打开“动作”面板。我们将使用两个onClipEvent事件处理程序的雪花-电影时的负载,和第二的onClipEvent(onEnterFrame)控制运动的onClipEvent(负载)设置的起始位置,大小和不透明度的雪花。 让我们来看看的onClipEvent(负载)第一:
onClipEvent事件(负载){
this._x = 0 + Math.random()的* 575;
this._y = -50 + Math.random()* 425;
this._alpha = Math.random()的* 100;
无功的大小;
大小= Math.random()的* 100;
如果(> = 50 && <= 100){
this._xscale大小;
this._yscale大小;
}
其他{
this._xscale = 90;
this._yscale = 90;
}
}
现在让我们来分析一下这个巨大的代码块。
_x和_y的线条处理与控制的电影负载时的起始位置的雪花,我们不希望所有的雪花来自同一个地方,但我们希望他们开始高于顶台边。 为此功能定义的水平(x)的位置的0点(左上角)的阶段,然后加入一个随机数在0.0和0.1之间,是被乘以略高于阶段的宽度所以,雪花可以下降不只是从顶部,但是从侧面。
垂直(y)的位置是类似的水平,只有而非起始于0(顶端边缘的阶段),它在-75开始,从而使一些薄片将落在从关闭阶段,但其他人将已经中途在舞台上下的电影第一次加载。 它还乘以值稍微大于高度。
_alpha参数被设置为0和100之间的百分比,所以设置的α值90,将意味着,雪花不透明度是90%。 要设置一个随机的不透明度的雪花,部分处理_alpha生成一个随机十进制数,然后乘以100,分配一个随机的alpha值。
_xscale和_yscale的_alpha参数一样,是数字0到100的百分比。 资料,而不是生成一个为每个独立的随机数,相反,我们分配一个随机数的大小可变,然后使用一个if语句来确定的值的大小,如果是大于或等于25,但小于或等于100 。 这可确保生成的雪花是不是太小而无法看到。 如果雪花满足这些标准,然后,我们设置的_xscale和_yscale参数的百分比等于该值的大小。 如果没有,那么else语句的比例为90%。
现在,让我们来看看控制随机向下漂移的onClipEvent(enterFrame事件):
onClipEvent事件(enterFrame事件){
POS =位置+(Math.random()* 0.1);
this._x = this._x +数学。黄大仙(POS);
this._y = this._y + 1 + Math.random()* 3;
如果(this._y> = 400){
this._y = this._y - 500 + Math.random()* 100;
this._x = 0 + Math.random()的* 575;
}
}
要打破这种下降:
pos是一个创建的变量,以帮助控制雪花的背面和来回漂移;我们定义的 x 位置每次电影进入的帧作为前一帧的x位置加上变量 pos正弦。 因为正弦值可以返回一个正或负的价值,有时还加了数学。黄大仙返回的值实际上结束了减去从目前的x位置,而不是增加,会引起向后运动。 位置也发生变化,由生成一个随机数,乘以0.1(这是我选择的一个随机数,但你可以使用任何你想这取决于你想怎么雪花振荡),然后将它的值的位置从以前的迭代。
y(垂直)的位置要简单得多,它被定义为一个像素,先进的前一个y位置,再加上一点点额外的进步,可以在任何地方从0.3到3个像素,使每朵雪花落在不同的速度。 虽然我的Math.random()的数量乘以3,您可以再次输入任意一个整数,甚至一个数学常数,自定义您的降雪适合你的速度。
最后, 一个 if 语句检查看到,雪花是否已达到底部(像素坐标的电影的高度相等),如果有,将它发送的压缩备份到顶部,而产生一个新的随机x位置。
你现在已经准备好做,但我们还有更多的工作要做一点点(不要担心,这是没有多大)。 一旦你完成指定动作脚本的雪花和调整的类型和速度的运动,你想要的,回到你的舞台,只是为自己的行为建立一个新的图层,右键单击第一帧(你应该只有一个),并选择“打开”动作“面板中的动作 。
我们要做的最后一件事是重复单一的雪花创建一个完整的随机雪花运动的风暴。
复制雪花乱舞的代码是:
DUP = Math.random()的* 5;
(dup的= 0; dup的<150; dup的+ +){
duplicateMovieClip的(this.snowbit,“snowbit”+ DUP,DUP);
}
这个脚本做的第一件事情是创建一个变量命名为DUP,我们将使用该随机数duplicateMovieClip的功能,将创建一个副本的雪花,然后给它一个新的名字。
但首先,代码使用了一个声明,这是一个循环,只要符合某些参数继续。 它的格式如下(初始条件下)函数执行里面的语句,导致循环,直到条件不再是有效的。 这项声明是说的 dup的值从0开始,直到它达到150,加1 dup和执行该语句括号内的(+ +添加到表达的是相同的话表达+1。)
因此,变量的DUP现在控制的最大数量的雪花可以存在,任何其他的价值,你想,这取决于你想要多少雪,改变150。
duplicateMovieClip的命令名称要复制的影片剪辑-调用我们指定的实例名称-然后创建一个新的名字为它连接的的dup在此字符串,创建一个唯一的名称,每次循环迭代循环周期。 (例如,如果第一随机生成dup的的值是2,那么第一个重复的雪花将snowbit2;第二种将snowbit3,等)
(责任编辑:卓想动画http://www.zxgzs.com)
上一篇:Flash MX的效果:文字轮廓