Flash AS 入门教程 三个实例讲解

所属分类: 媒体动画 / Flash教程 阅读数: 40
收藏 0 赞 0 分享

  一、画正玄图象,由外部输入控制起点横坐标、震幅和跨度。源文件下载

  点击查看动画效果<

  思路:我们可以在作业源程序中发现:


复制代码
代码如下:

  .......
  moveTo(100, 200); //正玄线的起点坐标为(100,200)可以把横坐标用一个变量(a)来表示
  ........

  y = 200-100*Math.sin(i*Math.PI/180);//其中100决定震幅大小,我们可以用变量(b)来表示;横坐标1个象数,对应表示1度的角度,在一个周期360度的条件下,如果横坐标1个象数对应几度,那么跨度显然会减小,就是说sin(i*Math.PI/180)中i的系数决定跨度的大小,经过反复测试这个系数为360/c比较合理。因此,原来程序中的这两条可以改为:


复制代码
代码如下:

  moveTo(a, 200);
  y = 200-b*Math.sin(360/c*i*Math.PI/180)


  为了能够重复使用这个画图程序,显然我们应该用自定义函数,上面的三个变量就可以做为参数。

  打开源程序3.7.1.fla文件,这里只记与作业不同的地方:

  第1帧上:


复制代码
代码如下:

  a = b=c=""; //对输入文本变量赋初值
  function huaxian(a, b, c) { //自定义函数,函数名为huaxian,参数为三个文本变量
   ............
  y = 200-b*Math.sin(360/c*i*Math.PI/180);//b决定震幅,c决定跨度
   .....
  if (i>c) { //超过360度时(由360/c*i>360计算得到i>c)
   delete onEnterFrame; //删除事件
  }
 };
}
  huaxian(100, 100, 360); //先画一个正玄图象


  按扭上的脚本:


复制代码
代码如下:

  on (release) {
   if (c<36) {
    web = "请输入36以上的整数"; //跨度太小,图象误差太大
   } else {
    web=""
    _root.huaxian(Number(a), Number(b), Number(c));//调自定义函数,并且把其中参数转化为数值
  }
 }

  二、把文字和下面的mc的位置都分别作任意的排列

  点击查看动画效果<

  思路:考虑mc位置的乱排,这些mc的纵坐标都相同,因此,我们主要考虑乱排横坐标。我们把这些mc的6个横坐标放入一个数组,用上一节讲的办法,很容易实现乱排的效果。

  打开3.7.1.fla文件

  在第1帧上的脚本为:


复制代码
代码如下:

  stop();
  i = 0;
  w_arry = [30, 110, 190, 270, 350, 430]; //把文本的横坐标作为一个数组
  for (t=1; t<7; t++) {
     m = Math.floor(Math.random()*w_arry.length);//从数组中任意选出一个编号
     this["wz"+t]._x = w_arry[m]; //把数组中这个编号的元数作为这个文本的横坐标
     w_arry.splice(m, 1);     //从这个数组中删去这个元数;
     this["wz"+t]._y = 30;    //设置这个文本的纵坐标
   }
  tx_arry = [76, 156, 236, 316, 396, 476]; //与上面类同;
  for (s=1; s<7; s++) {
   m = Math.floor(Math.random()*tx_arry.length);
   this["tx"+s+"_mc"]._x = tx_arry[m];
   tx_arry.splice(m, 1);
   this["tx"+i+"_mc"]._y = 320;
 }
  function stlx(md, mc) {  //设置自定义函数
   md.x = md._x;      //影片剪辑的坐标用这个影片剪辑下的变量x,y来保存
   md.y = md._y;
   md.onPress = function() { //鼠标在md上按下时;
    startDrag(this, true);  //拖动这个md;
   };
   md.onRelease = function() { //鼠标在md上松开时;
     stopDrag();       //停止拖动;
     if (md.hitTest(mc)) {  //如果md和mc交叉或者重叠;
       if (md.k != 1) {   //又如果md下的变量k不等于1的话;
         i++;       //变量i加1;
         md.k = 1;     //使md下的变量k=1;
        }
       if (i == 6) {     //如果i等于6;
         nextFrame();//到下一帧停下;
       }
    } else { //如果md和nc不重叠或者相交;
     md._x = md.x; //把md原来的坐标赋给md(回到原来的位置)
     md._y = md.y;
    }
   };
  }
   for (j=1; j<7; j++) { //相当于在6个mc上调自定义函数
    stlx(this["tx"+j+"_mc"], this["wz"+j]);
   }
  /* 例如,j=1,那么就是:
   stlx(this.tx1_mc,this.wz1)
  */

  三、这四个元件开始顺序播放时,一个结束到另外一个开始的时间 间隔就能等于输入 的时间 ?随机播放的时候 一个结束到另一个播放的时间 的间隔也等于输入 的时间

  点击查看动画效果<

  思路:

  方法1 可以在4个元件的最后一帧上加脚本,使另外的元件隔一定时间开始播放;

  方法2 可以使用(帧频)事件处理函数来监测,如果影片的当前帧等于总帧数,那么这个影片播放完毕,让其它影片开始播放。用方法2比较简单。

  打开 3.7.3fla文件:

  在第1帧上的脚本为:


复制代码
代码如下:

   yp_array = [aa, bb, cc, dd]; //把4个mc作为数组yp_array的元素;
   time = "";
   i = 0;
   function du() {       //自定义函数du
    yp_array[i].play();    //播放数组yp_array中第i个mc
    yp_array[i].onEnterFrame = function() { //对这个mc使用事件处理函数
      if (this._currentframe == this._totalframes) { //如果这个mc的当前帧等于总帧数;
        sj = setInterval(du, time*1000);  //间隔time*1000毫秒调这个自定义函数du;
        delete this.onEnterFrame;     //删除事件;
       }
    };
  clearInterval(sj);           //清除时间间隔函数
   i++;
 }
   function duing() {
    k = Math.floor(Math.random()*yp_array.length);
           //根据数组yp_array的长度,选择一个随机数k;
    yp_array[k].play();         //数组yp_array中的第k个mc播放
    yp_array[k].onEnterFrame = function() {  //对这个mc使用事件处理函数
      if (this._currentframe == this._totalframes) { //如果这个mc的当前帧等于总帧数;
        sjing = setInterval(duing, time*1000); 
            //间隔time*1000毫秒调这个自定义函数duing;
        delete this.onEnterFrame; //删除事件;
       }
     };
   yp_array.splice(k, 1);  //从数组yp_array中删除第k个元数
   clearInterval(sjing);  //清除时间间隔函数
  }

  在按扭“顺序播放”上的脚本:


复制代码
代码如下:

  on (release) {
   yp_array = [aa, bb, cc, dd];//重新给数组yp_array赋值
   clearInterval(sjing);
     //删除随机播放时的时间间隔函数;这两句是防止先按“随机播放”后出错。
   i = 0; //重新给变量赋值。
   if (time != "") {
    du(); //调函数du
   }
  }

  在按扭“随机播放”上的脚本:


复制代码
代码如下:

 on (release) { //与“顺序播放”按扭上的脚本类似
  yp_array = [aa, bb, cc, dd];
  clearInterval(sj);
  i = 0;
  if (time != "") {
   duing();
    }
  }

  查看全套"Flash AS 高级教程"

更多精彩内容其他人还在看

Flash cs3绘制人物高级行走动画教程

本教程向大家介绍Flash cs3绘制人物高级行走动画效果,教程难度不是很大,绘制方法及过程介绍的也非常详细,教程很实用,转发过来,希望大家喜欢
收藏 0 赞 0 分享

Flash CS4来制作漂亮的气泡动画教程

本教程向脚本之家的朋友介绍用Flash CS4来制作漂亮的气泡动画,制作出来气泡真的很好看,制作效果是采用代码形式实现,觉得很不错,转发过来,感兴趣的朋友可以一起来学习
收藏 0 赞 0 分享

flash基础教程:帧、关键帧、空白帧概念及区别介绍

动画的产生是帧来实现的,那什么是帧?帧、关键帧和空白帧之间又有什么区别?本文就为大家介绍一下三者之间的关系
收藏 0 赞 0 分享

Flash教程:动画背景的绘制方法之透视篇(给新手)

Flash动画在网络上的广泛传播,已经成为上网一族喜闻乐见的一种艺术形式。动画背景的绘制方法有很多,也有很多表现方法。这里将结合透视学的基础知识向大家简单的介绍一下动画背景的绘制。
收藏 0 赞 0 分享

Flash AS入门教程:Flash AS3.0制作有年份有日期的时钟

本教程是向大家介绍利用Flash AS3.0制作有年份有日期的时钟,虽然制作时钟老套了点,但它确可以较全面地应用到时间日期和间隔等知识,仍不失为较好的入门练习,转发给大家,希望对大家有所帮助
收藏 0 赞 0 分享

Flash相册制作大师具体该如何使用 Flash相册制作大师使用教程

在本文中我们将会看到的是Flash相册制作大师的具体使用的方法
收藏 0 赞 0 分享

flash基础教程:混色器面板图文介绍

混色器面板是Flash中用于色彩处理的一个重要面板,熟练地使用该面板,可以帮助用户快速地完成色彩的填充,编辑出色彩丰富的图形。本教程为大家详细介绍一下混色器面板,希望对大家有所帮助
收藏 0 赞 0 分享

25个绝对让你应接不暇的Flash网站创意

在Web设计过程中,运用成熟的Flash技术可以把你任意想到的idea表现到产品页面中。这里为你整理发现了25个绝对让你应接不暇的 Flash网站创意,更好地体现网站的互动应用,同时可以让你大饱眼福,一起来欣赏吧
收藏 0 赞 0 分享

教你用Flash制作非常酷的二进制时钟动画

今天在这个教程中我们将学习用Flash做一个不同寻常的,但非常酷的时钟:一个二进制时钟,中间用到了代码,但介绍地很详细,相信很值得大家学习
收藏 0 赞 0 分享

Flash动画特效制作技巧:制作超酷的文字炸开动画效果

本教程向大家介绍Flash动画特效制作技巧,本实例是制作文字炸开的动画效果,制作效果非常酷,制作过程也比较简单,喜欢的朋友可以过来学习一下这种制作方法
收藏 0 赞 0 分享
查看更多