您所在的位置: 首页 > 教程首页 > 媒体工具 > Flash AS3.0实现逼真喷泉效果教程

Flash AS3.0实现逼真喷泉效果教程

来源:互联网 | 编辑:啤酒 | 时间:2013-07-17 11:11:04 | 阅读:16777215

我们将介绍利用速度向量和重置对象的技巧来实现喷泉效果。所谓向量就是有方向的量。比如一辆车从东向西以80公里每小时的速度行驶,那么我们就可以得到汽车的速度向量,它包括两个元素:速度,每小时80公里,方向,由东向西。

  下面我们来分析一下喷泉是怎样形成的?

  喷泉是若干个水珠向上喷射,然后又受重力影响掉回地面。这个过程的速度向量有哪些,具体又是怎么的呢?很容易发现至少的两个力,一个是使水珠向上喷射的外力,一个是使水珠掉回地面的重力。

  外力的速度向量:速度我设为10-20间的随机数,方向是向上的那就一定是y轴上的负数了。将这个速度向量加到水珠上就使水珠向上喷射了。

  具体做法是:在ENTER_FRAME事件中这水珠的y 值加上-10到-20间的一个随机数。

  重力的速度向量:速度就比较小了我设为0.5,方向则是y轴上的正值。同样加到ENTER_FRAME事件中,这样水珠在喷射后就会掉回地上。

  还有个问题,因为速度向量是加在ENTER_FRAME事件中的,水珠就可能一直按这些速度向量运动,面远离舞台,那喷泉就不知会喷到什么地方去了。

  要解决这个问题,就要将超出舞台边界的水珠重新定位到喷射口,这样就形成了不间断的喷射了。

  好了,上面分析了效果产生方法,下面就来制作

  第一步是要画一个水珠,新建一个影片剪辑元件,用放射填充画一个椭圆,左色标为白色,透明度100%,右色标略带点灰色,透明度50%。在属性面板中设置椭圆在宽为2像素,高为5像素。在库中右击该元件,打开连接窗口,(cs4打开属性窗口),设置一个类名,我设的是 pall。

  接下来回到主场景,打开帧动作面板,我们来写代码。

  喷泉是由若干水珠形成的,多少呢?我整了500个:

  var count:int = 500;

  重力速度向量:

  var zl:Number = 0.5;

  将这500个水珠放到一个数组中:

  var balls:Array;

  balls = new Array();

  用一个for循环来将500个水珠放到数组中:

  for (var i:int = 0; i < count; i++) {

  var ball:pall = new pall();

  将水珠定位到水珠的喷射口:

  ball.x = 260;

  ball.y = 200;

  在x轴方向也设一个速度向量,使水珠在x轴的一定范围内,并将这个速度向量存到每个水珠的自定义属性vx中:

  ball["vx"]= Math.random() * 2 - 1;

  下面是y轴方向的速度向量,将它存在自定义属性vy中:

  ball["vy"] = Math.random() * -10 - 10;

  将水珠放到舞台上,并存到数组中:

  addChild(ball);

  balls.push(ball);

  接下来侦听ENTER_FRAME事件,实现喷泉效果:

  addEventListener(Event.ENTER_FRAME, onEnterFrame);

  onEnterFrame函数内容:

  通过一个for循环为数组中的水珠加上各个速度向量:

  for (var i:Number = 0; i < balls.length; i++) {

  var ball:pall = pall(balls);

首选在喷射速度向量上加上重力速度向量,这样每一帧的时间就会加一次重力,而喷射力却没变,这样重力就会逐渐超过喷射力面使水珠下落:

  ball["vy"] += zl;

  将x,y轴速度向量加到水珠上:

  ball.x +=ball["vx"];

  ball.y +=ball["vy"];

接下来的是看水珠是否超出了舞台,如果超出了舞台,则将水珠重新定位到喷射口,并将速度向量设为初始状态。

  if (ball.x - ball.width/2> stage.stageWidth ||

  ball.x + ball.width/2 < 0 ||

  ball.y - ball.width/2 > stage.stageHeight ||

  ball.y + ball.width/2 < 0) {

  ball.x = 260;

  ball.y = 200;

  ball["vx"]= Math.random() * 2 - 1;

  ball["vy"] = Math.random() * -10 - 10;

  完整代码:

  var count:int = 500;

  var zl:Number = 0.5;

  var balls:Array;

  balls = new Array();

  for (var i:int = 0; i < count; i++) {

  var ball:pall = new pall();

  ball.x = 260;

  ball.y = 200;

  ball["vx"]= Math.random() * 2 - 1;

  ball["vy"] = Math.random() * -10 - 10;

  addChild(ball);

  balls.push(ball);

  }

  addEventListener(Event.ENTER_FRAME, onEnterFrame);

  function onEnterFrame(event:Event):void {

  for (var i:Number = 0; i < balls.length; i++) {

  var ball:pall = pall(balls[i]);

  ball["vy"] += zl;

  ball.x +=ball["vx"];

  ball.y +=ball["vy"];

  if (ball.x - ball.width/2> stage.stageWidth ||

  ball.x + ball.width/2 < 0 ||

  ball.y - ball.width/2 > stage.stageHeight ||

  ball.y + ball.width/2 < 0) {

  ball.x = 260;

  ball.y = 200;

  ball["vx"]= Math.random() * 2 - 1;

  ball["vy"] = Math.random() * -10 - 10;

  }

  }

  }

BannerZest Pro Mac版 V4.0
BannerZest Pro Mac版 V4.0

类型:编程软件  大小:0MB  平台:

MAC

你可能感兴趣的内容

  • 暴风影音加速播放方法教程
    暴风影音加速播放方法教程
    有的小伙伴在使用暴风影音看电视的时候,看到不喜欢的片段,想要跳过去,就可以使用暴风影音加速播放功能。那么,暴风影音怎么加速播放?今天,飞翔铭月给大家带来暴风影音加速播放教程,希望可以帮助大家。

    媒体工具

    2018-07-23

  • 暴风影音avi文件不能播放解决办法​
    暴风影音avi文件不能播放解决办法​
    在使用暴风影音来观看影片的时候,发现AVI文件的视频不能播放,这是怎么回事?下面飞翔铭月就为大家带来了暴风影音avi文件不能播的解决方法。

    媒体工具

    2018-07-23

  • 小米投屏神器使用方法教程
    小米投屏神器使用方法教程
    小米投屏神器怎么使用?很多小伙伴们都还不知道,下面52z飞翔下载小编为大家整理了小米投屏神器使用方法教程,一起来看看吧。

    媒体工具

    2018-07-11

  • 巧影视频分身制作教程
    巧影视频分身制作教程
    巧影app是一款专业媒体视频剪辑器,最近看见抖音有很多小伙伴都在玩“分身术”,大家都在问抖音分身术怎么拍?其实抖音中的分身术视频都是通过巧影app剪辑上传到抖音的,想知道巧影分身视频怎么拍?一起跟飞翔铭月来看一下巧影分身教程吧。

    媒体工具

    2018-05-30

  • 爱奇艺投屏电视设置方法教程
    爱奇艺投屏电视设置方法教程
    爱奇艺投屏电视怎么设置?很多小伙伴们都还不知道,下面52z飞翔下载小编为大家整理了爱奇艺投屏电视设置方法教程,一起来看看吧。

    媒体工具

    2018-05-25

  • qsv格式转换mp4格式图文教程
    qsv格式转换mp4格式图文教程
    很多朋友都有遇到过QSV视频文件无法打开的情况吧。今天本文主要分享一下QSV文件怎么打开,另外如果需要手机、电脑都可以轻松打开qsv文件,则还需要将QSV文件转换成MP4格式就可以了,下面具体来看看。

    媒体工具

    2018-05-14

  • 《暴风转码》翻转视频方法教程
    《暴风转码》翻转视频方法教程
    暴风转码是一款非常实用的视频转码软件,不过一些朋友使用暴风转码后发现图像被倒置了,这个时候怎么办?下面由52z飞翔小编为你带来《暴风转码》翻转视频方法教程,希望能帮助到你

    媒体工具

    2017-12-19

  • 西瓜视频登录方法详细教程
    西瓜视频登录方法详细教程
    西瓜视频是由头今日条视频更改以后的名称,不少用户还不清楚西瓜视频怎么登录?下面就和52z飞翔网小编一起来看看西瓜视频登录方法详细介绍吧!

    媒体工具

    2017-11-02

  • 步兵社区怎么注册 步兵社区账号密码分享
    步兵社区怎么注册 步兵社区账号密码分享
    步兵社区入口——是一款全新的福利看片播放神器,无需充值就可以体验vip待遇,账号密码已绿色,在线播放,还有更多的离线服务,更多的资源等你来,一键搜索!带你轻松免费观看最新伦理大片,一键下载缓存,给你高清流畅观影体验!

    媒体工具

    2017-11-02

  • 爱奇艺账号可以同时登陆吗 爱奇艺会员最多几个人使用
    爱奇艺账号可以同时登陆吗 爱奇艺会员最多几个人使用
    爱奇艺会员最多几个人使用?爱奇艺会员有一个家庭成员的设置这个可以让自己的家庭成员一起使用这个会员,浏览历史也能够不同,这个是其黄金会员的一个特权,那么如何共享呢,下面52z飞翔网小编将为大家讲解一下教程希望大家满意。

    媒体工具

    2017-05-27

热门游戏

下载声明 | 法律声明 | 版权声明 | 友情链接 | 发布软件 | 最新更新

本站为非盈利性网站,不接受任何广告。本站所有资源均由网友上传,如有侵权,请发邮件至 hnrshwl@163.com

晋ICP备2024046785号-1