将我所学的FLASH知识制作成教程,权作我的学习笔记。

我的最新日志

  • 纯AS打字超出边框向上滚动且自动添加滚动条(原创)

    2008-7-03

    [效果]
    纯AS打字自动添加滚动条.swf (158.64 KB)
    [要求]
    如题
    [过程]
    在第一帧写如下代码即可:
    fscommand("fullscreen", "false");
    fscommand("allowscale", "false");
    fscommand("showmenu", "false");
    //var my_sound:Sound = new Sound(this);
    //画外框
    this.createEmptyMovieClip("kuang_mc", 5);
    kuang_mc.lineStyle(2, 0xC9C08F);
    kuang_mc.moveTo(1, 1);
    kuang_mc.lineTo(415, 1);
    kuang_mc.lineTo(415, 299);
    kuang_mc.lineTo(1, 299);
    kuang_mc.lineTo(1, 1);
    //画背景
    this.createEmptyMovieClip("beijing_mc", 0);
    beijing_mc.beginFill(0xECE9DB);
    beijing_mc.moveTo(0, 0);
    beijing_mc.lineTo(416, 0);
    beijing_mc.lineTo(416, 300);
    beijing_mc.lineTo(0, 300);
    beijing_mc.lineTo(0, 0);
    beijing_mc.endFill();
    //画遮罩
    this.createEmptyMovieClip("mask_mc", 1);
    mask_mc.beginFill(0xFFFFFF);
    mask_mc.moveTo(0, 0);
    mask_mc.lineTo(396, 0);
    mask_mc.lineTo(396, 300);
    mask_mc.lineTo(0, 300);
    mask_mc.lineTo(0, 0);
    mask_mc.endFill();
    mask_mc._alpha = 0;
    //画滚动条背景
    mask_mc.duplicateMovieClip("gundongtiaobj_mc", 2);
    gundongtiaobj_mc._alpha = 100;
    gundongtiaobj_mc._x = mask_mc._x+mask_mc._width;
    gundongtiaobj_mc._width = 20;
    //画滚动条
    gundongtiaobj_mc.duplicateMovieClip("_btn", 3);
    gundongtiao_color = new Color(_btn);
    _btn._x = gundongtiaobj_mc._x;
    gundongtiao_color.setRGB(0xC0D2FC);
    //创建打字影片剪辑
    this.createEmptyMovieClip("_mc", 4);
    _mc._x = mask_mc._x;
    _mc._y = mask_mc._y;
    _mc.setMask(mask_mc);
    //申明的一些变量
    var i:Number = 0;
    var my_fmt:TextFormat = new TextFormat();
    var my_str:String = "动画原创作者——刘常(琴者qinz)"+newline+"再别康桥——徐志摩"+newline+"轻轻的我走了,正如我轻轻的来;"+newline+"我轻轻的招手,作别西天的云彩。"+newline+"那河畔的金柳,是夕阳中的新娘;"+newline+"波光里的艳影,在我的心头荡漾。"+newline+"软泥上的青荇,油油的在水底招摇;"+newline+"在康河的柔波里,我甘心做一条水草!"+newline+"那榆荫下的一潭,不是清泉,"+newline+"是天上虹揉碎在浮藻间,沉淀着彩虹似的梦。"+newline+"寻梦?撑一支长篙,向青草更青处漫溯,"+newline+"满载一船星辉,在星辉斑斓里放歌。"+newline+"但我不能放歌,悄悄是别离的笙箫;"+newline+"夏虫也为我沉默,沉默是今晚的康桥。"+newline+"悄悄的我走了,正如我悄悄的来;"+newline+"我挥一挥衣袖,不带走一片云彩。";
    //创建动态文本
    _mc.createTextField("my_txt", 1, 50, 20, 0, 0);
    //控制文本字段的自动大小调整和左对齐
    _mc.my_txt.autoSize = true;
    _mc.my_txt.selectable = false;
    //设置文本行距
    my_fmt.leading = 20;
    //设置文本的颜色
    my_fmt.color = 0x000000;
    //动态文本应用新文本格式
    _mc.my_txt.setNewTextFormat(my_fmt);
    //文字背景,防止最后几行显示
    _mc.createEmptyMovieClip("wzbj_mc", 2);
    _mc.wzbj_mc.beginFill(0x00FF00, 0);
    _mc.wzbj_mc.moveTo(0, 0);
    _mc.wzbj_mc.lineTo(400, 0);
    _mc.wzbj_mc.lineTo(400, 300);
    _mc.wzbj_mc.lineTo(0, 300);
    _mc.wzbj_mc.lineTo(0, 0);
    _mc.wzbj_mc.endFill();
    _mc.onEnterFrame = function() {
    this.wzbj_mc._height = this.my_txt._height+35;
    this.wzbj_mc._y = this.my_txt._y-20;
    //如果变量i不大于my_str的字符数
    if (i<=length(my_str)) {
      _btn.enabled = false;
      //动态文本显示my_str的字符(从第一个字符开始,长度为i)
      this.my_txt.text = my_str.substr(0, i)+"_";
      //变量递增1
      i++;
      if ((this.my_txt._y+this.my_txt._height)>mask_mc._height) {
       this.wzbj_mc._y = this.my_txt._y -= 35;
      } else {
       this.my_txt._y -= 0;
      }
    }
    //如果变量i大于my_str的字符数                                                                                                                                      
    if (i>length(my_str)) {
    // my_sound.stop();
      _btn.enabled = true;
      this.my_txt.text = my_str;
      //停止 setInterval() 调用
      delete this.onEnterFrame;
      delete mask_mc.onEnterFrame;
    }
    };
    mask_mc.onEnterFrame = function() {
    //申明影片剪辑滚动距离变量及按钮和按钮背景影片剪辑的可见性设置
    var ypgdjl:Number = _mc._height-mask_mc._height;
    if (ypgdjl<=0) {
      _btn._visible = 0;
    } else {
      _btn._visible = 1;
    }
    _btn._height = int(mask_mc._height*((_mc._height-ypgdjl)/_mc._height));
    _btn._y = mask_mc._height-_btn._height+mask_mc._y;
    var btntdjl:Number = mask_mc._height-_btn._height;
    //按钮按下开始拖动并设置影片剪辑的坐标
    _btn.onPress = function() {
      startDrag(this, false, mask_mc._width+mask_mc._x, mask_mc._y, mask_mc._width+mask_mc._x, btntdjl+mask_mc._y);
      _mc.onEnterFrame = function() {
       _mc._y = -(int((_btn._y/btntdjl)*ypgdjl))+ypgdjl;
      };
    };
    _btn.onRelease = _btn.onReleaseOutside=function () {
      stopDrag();
    };
    };
  • 简单翻转相册(原创)

    2008-7-03

    简单翻转相册(原创)(附制作步骤和源文件)

    [效果]
    翻转效果相册.swf
    [目的]
    1、掌握平面产生立体翻转效果的创意;
    2、任意变形工具的熟练使用;
    3、了解简单滤镜效果。
    [过程]
    一、新建影片剪辑,名为“3D”,第一帧画一个宽200、高150的白色矩形;第10帧选择任意变形工具,同时按住Ctrl和Shift键,用鼠标按住矩形右下角的变形点往上推至中心;然后同时按住Alt和Shift键,用鼠标按住矩形的左侧或右侧住里推,将图形压扁;第11帧插入关键帧,选中图形,使其水平翻转;第21帧复制粘贴第一帧的图形;选择第1帧和第11帧创建形状补间动画;第1帧上写上语句stop()如下图所示:

    二、新建影片剪辑,名为“照片”,每一帧导入一张图片(大小不能小于上面的矩形),第一帧上写上语句stop()
    三、回到主场景,把帧速调为每秒30帧:
    1、第一层拖入“3D”,实例名为“kuang_mc”,添加滤镜效果:发光(2,2,1000%,低,#CCCCCC),投影(2,2,1000%,中,#CCCCCC,45,3);第22帧插入关键帧,延长帧至第42帧。
    2、第二层拖入“照片”,实例名为“photos_mc”,第10帧插入关键帧,将其变形宽度变小(不得小于“3D”变形后的大小);第11帧插入关键帧,使其水平翻转;第20帧插入关键帧,使其宽度恢复到原来的宽度;第21帧插入关键帧;第31帧插入关键帧,将其变形宽度变小;第32帧插入关键帧,使其水平翻转;第42帧插入关键帧,使其宽度恢复到原来的宽度。
    3、第三层拖入“3D”,实例名为“mask_mc”,第22帧插入关键帧。
    4、第四层第1、21帧插入空白关键帧,帧上都写如下代码:
    stop();
    kuang_mc.stop();
    mask_mc.stop();
    setTimeout(function () {
    kuang_mc.play();
    mask_mc.play();
    play();
    }, 2000);
    第11、32帧插入空白关键帧,帧上都写如下代码:
    photos_mc.play();
    [源文件]
    翻转相册.fla
  • 向上滚动打字带自动滚动条

    2008-7-02

  • 倒数或倒计时(我回复论坛的贴子)

    2008-7-02

    [效果]

    [代码]
    _txt.text = "倒数开始!";
    onMouseDown = function () {
    a = !a;
    a ? (num=20, setID=setInterval(timer, 100)) : (clearInterval(setID), num=20, _txt.text="重新倒数!");
    };
    function timer() {
    num--;
    _txt.text = num;
    if (num == 0) {
      _txt.text = "倒数结束!";
      clearInterval(setID);
      a = !a;
    }
    }
    [源文件]
    setInterval.fla (48 KB)
  • 第一次接触导入外部视频

    2008-6-30


    Flash: 朝闻天下 全屏浏览

  • 加载外部影片缓冲移入

    2008-6-29

    根据“终极讨厌”老师回复别人的帖子而做。

    [效果]

    见我的网页“琴者网页

    [代码]

    var _txt:TextField = this.createTextField("_txt", this.getNextHighestDepth(), 0, 0, 0, 0);
    _txt.autoSize = true;
    var mask_mc:MovieClip = this.createEmptyMovieClip("mask_mc", this.getNextHighestDepth());
    mask_mc.beginFill(0x00ff00);
    mask_mc.moveTo(0, 0);
    mask_mc.lineTo(550, 0);
    mask_mc.lineTo(550, 400);
    mask_mc.lineTo(0, 400);
    mask_mc.lineTo(0, 0);
    mask_mc.endFill();
    mask_mc._alpha = 0;

    //按下鼠标载入影片
    var _mcl:MovieClipLoader = new MovieClipLoader();
    var main_mc:MovieClip = this.createEmptyMovieClip("main_mc", 1);
    _btn.onPress = function() {
     _mcl.loadClip("***.swf", main_mc);
    };
    //加载进度
    onLoadProgress = function (_mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
     _txt.text = "已加载:"+int(bytesLoaded/bytesTotal*100)+"%";
     if (bytesLoaded/bytesTotal>=1) {
      _txt.removeTextField();
     }
    };
    //载入的SWF坐标设置
    var mclListener:Object = new Object();
    mclListener.onLoadInit = function(_mc:MovieClip) {

    mclListener.onLoadInit = function (_mc:MovieClip) {
     _mc.setMask(mask_mc);
     _mc._x = -800;
     _mc._y = (Stage.height-_mc._height)/2;
     onEnterFrame = function () {
      _mc._x += (((Stage.width-_mc._width)/2-_mc._x))/2.5;
      if (_mc._x>=((Stage.width-_mc._width)/2)-1) {
       _mc._x = (Stage.width-_mc._width)/2;
       delete onEnterFrame;
      }
     };
    };
    _mcl.addListener(mclListener);

     

  • 每隔5秒后重新打字

    2008-6-28

    dazi.swf

    /////////////////////////////////////////////////////////////////
    stop();
    //申明变量
    var my_sound:Sound = new Sound();
    my_sound.attachSound("dazi.mp3")
    my_sound.start()
    var id:Number = setInterval(dazi, 100);
    var i:Number = 0;
    var my_fmt:TextFormat = new TextFormat();
    var my_str:String = "再别康桥——徐志摩"+newline+newline+"轻轻的我走了,"+newline+"正如我轻轻的来;"+newline+"我轻轻的招手,"+newline+"作别西天的云彩。";
    //创建动态文本
    this.createTextField("my_txt", 1, 100, 40, 120, 20);
    //控制文本字段的自动大小调整和左对齐
    my_txt.autoSize = true;
    //设置文本行距
    my_fmt.leading = 6;
    //设置文本的颜色
    my_fmt.color = 0x000000;
    //动态文本应用新文本格式
    my_txt.setNewTextFormat(my_fmt);
    //自定义函数
    function dazi() {
    //如果变量i不大于my_str的字符数
    if (i<=length(my_str)) {
      i++;
      //动态文本显示my_str的字符(从第一个字符开始,长度为i)
      my_txt.text =my_str.substr(0, i-1);
      //变量递增1
    }
    //如果变量i大于my_str的字符数                                                
    if (i>length(my_str)) {
      my_sound.stop()
      //停止 setInterval() 调用
      clearInterval(id);
      setTimeout(function () {
       i = 0;
       my_txt.text = "";
       my_sound.start()
       id = setInterval(dazi, 100);
      }, 5000);
    }
    }

  • 左侧菜单导航栏

    2008-6-27

    作者:刘常(琴者)
    *********转载请注明作者**********
    [效果]
    左侧菜单导航栏.swf (2.18 KB)
    [要求]
    1、按钮(滚动条)的高度随菜单的高度而变化;
    2、拖动按钮时菜单滚动;
    3、鼠标移上子菜单时有显示;
    4、鼠标点击子菜单时有显示;
    [步骤]
    1、新建文件,宽550、高436。
    2、新建影片剪辑,名为“子菜单”,第一层第一帧画一个透明矩形,宽174、高20,在第二帧插入关键帧,矩形不透明,填充颜色为#E1F0FF;第二层(最上)拉一动态文本,字体“宋体”、大小13、实例名为my_txt,延长帧到第二帧。
    3、新建影片剪辑,名为“菜单组合”;把“子菜单”拖入,在这里我一共拖入52个,实例名分别为bt1_mc、bt2_mc、bt3_mc……bt52_mc。
    4、新建按钮元件,名为“按钮”,画一个矩形,宽16、高436填充颜色为#B7CDFC;新建影片剪辑,名为“按钮背景”,画一个矩形,宽16、高436,填充颜色为#ECE9D8。
    5、新建影片剪辑,名为“显示条”,画一个矩形,宽174、高20、填充颜色为#006400。
    6、新建影片剪辑,名为“遮罩”,画一个矩形,宽174、高436填充颜色任意。
    7、回到主场景中,创建七个图层,图层名从下到上分别为“显示条”、“遮罩显示条”、“菜单组合”、“遮罩菜单”、“按钮背景”、“按钮”、“动作”;分别从库中拖入“显示条”、“遮罩”、“菜单组合”、“遮罩”、“按钮背景”、“按钮”到相应图层的第一帧上,实例名分别为xst_mc、maskxst_mc、_mc、mask_mc、btnbj_mc、_btn。
    8、在“动作”图层的第一帧上写如下语句:
    this._lockroot = true;
    //设置遮罩
    _mc.setMask(mask_mc);
    xst_mc.setMask(maskxst_mc);
    //申明影片剪辑滚动距离变量及按钮和按钮背景影片剪辑的可见性设置
    var ypgdjl:Number = _mc._height-mask_mc._height;
    if (ypgdjl<=0) {
    _btn._visible = 0;
    } else {
    _btn._visible = 1;
    }
    //设置一些元件的坐标及按钮的高度
    mask_mc._x = mask_mc._y=maskxst_mc._x=maskxst_mc._y=_mc._x=_mc._y=xst_mc._x=xst_mc._y=0;
    _btn._height = int(mask_mc._height*((_mc._height-ypgdjl)/_mc._height));
    _btn._x = btnbj_mc._x=mask_mc._width;
    _btn._y = btnbj_mc._y=mask_mc._y;
    //按钮按下开始拖动并设置影片剪辑的坐标
    var btntdjl:Number = mask_mc._height-_btn._height;
    _btn.onPress = function() {
    startDrag(this, false, mask_mc._width, mask_mc._y, mask_mc._width, btntdjl);
    _mc.onEnterFrame = function() {
      this._y = -(int(_btn._y/btntdjl*ypgdjl));
      xst_mc._y = Y+this._y;
    };
    };
    _btn.onRelease = _btn.onReleaseOutside=function () {
    stopDrag();
    };
    var biaoti_array:Array = new Array("顶端导航栏", "显示时间和问候语", "钟表(纯AS)", "左侧导航栏", "滚动条", "Flash音乐播放器(一)", "Flash音乐播放器(二)", "Flash音乐播放器(三)", "Flash音乐播放器(四)", "动态打字", "右键菜单", "任意倒计时", "动画加载进度显示", "放大镜(一)", "放大镜(二)", "放大镜(三)", "导入外部视频", "填空测试", "纯AS钟表", "日期倒计时", "滚动条", "填空测试", "纯AS钟表", "日期倒计时", "滚动条", "填空测试", "日期倒计时", "滚动条", "填空测试", "定时出现问候语", "动态打字", "音乐播放器", "自定义鼠标", "雪花", "百叶窗", "相册", "纯AS钟表", "日期倒计时", "滚动条", "填空测试", "纯AS钟表", "日期倒计时", "滚动条", "填空测试", "纯AS钟表", "日期倒计时", "滚动条", "填空测试", "纯AS钟表", "日期倒计时", "滚动条", "填空测试", "日期倒计时", "滚动条", "填空测试");

    //以上根据你的需要去显示菜单
    this.createEmptyMovieClip("load_mc", this.getNextHighestDepth());
    load_mc._x = 190;
    load_mc._y = 0;
    var _mcl:MovieClipLoader = new MovieClipLoader();
    var load_array:Array = new Array("jiaocheng/dddhl.swf", "jiaocheng/time.swf", "jiaocheng/watch.swf", "jiaocheng/zcdhl.swf", "jiaocheng/gdt.swf", "jiaocheng/yybfq1.swf", "jiaocheng/yybfq2.swf", "jiaocheng/yybfq3.swf", "jiaocheng/yybfq4.swf", "jiaocheng/dz.swf", "jiaocheng/yjcd.swf", "jiaocheng/rydjs.swf", "jiaocheng/jzjdxs.swf", "jiaocheng/fangdajing1.swf", "jiaocheng/fangdajing2.swf", "jiaocheng/fangdajing3.swf", "jiaocheng/shiping.swf");

    //以上是你需要载入文件的路径
    xst_mc._visible = 0;
    for (i=1; i<53; i++) {
    this._mc["bt"+i+"_mc"].stop();
    this._mc["bt"+i+"_mc"].id = i;
    this._mc["bt"+i+"_mc"].my_txt.textColor = 0xFFFFFF;
    this._mc["bt"+i+"_mc"].my_txt.text = biaoti_array[i-1];
    this._mc["bt"+i+"_mc"].onRollOver = function() {
      this.gotoAndStop(2);
      this.my_txt.textColor = 0x000000;
    };
    this._mc["bt"+i+"_mc"].onPress = function() {
      _mcl.loadClip(load_array[this.id-1], load_mc);
      Y = (this.id-1)*20;
      xst_mc._y = Y+_mc._y;
      xst_mc._visible = 1;
    };
    this._mc["bt"+i+"_mc"].onReleaseOutside = this._mc["bt"+i+"_mc"].onRollOut=function () {
      this.gotoAndStop(1);
      this.my_txt.textColor = 0xFFFFFF;
    };
    }
    [源文件]
    左侧菜单导航栏.fla
  • 加载进度显示

    2008-6-25

    作者:刘常(琴者)
    [难点]进度条与文字不重合的地方文字为黑色、重合的地方变白。
    [效果]
    jzjdxs.swf (12.23 KB)
    [步骤]
    一、新建影片剪辑,名为“进度条”,画一个长方形,宽200、高20;
    二、新建影片剪辑,名为“白字”,拉一动态文本,实例名为“_txt”;
    三、新建影片剪辑,名为“黑字”,拉一动态文本,实例名为“_txt”;
    四、回到主场景,第一层第一帧上拖入“进度条”,实例名为“jdt_mc”,延至第三帧;
    五、第二层第一帧上拖入“黑字”,实例名为“hz_mc”,延至第三帧;
    六、第三层第一帧上拖入“白字”,实例名为“bz_mc”,延至第三帧;
    七、第四层拖入“进度条”,实例名为“mask_mc”,延至第三帧;
    八、第五层第一帧上写如下代码:
    loaded=0
    jdt_mc._xscale =mask_mc._xscale =0
    第二帧上写如下代码:
    loaded= getBytesLoaded()/getBytesTotal()*100;
    if (loaded>=100) {
    gotoAndStop("场景 1", 1);
    } else {
    mask_mc._xscale = jdt_mc._xscale=loaded;
    hz_mc._txt.text = bz_mc._txt.text="已下载"+int(loader)+"%";
    }
    bz_mc.setMask(mask_mc);
    第三帧上写如下代码:
    gotoAndPlay(2);

    ——————原创教程,转载请注明出处——————

  • 简单滚动条

    2008-6-25

    简单滚动条(原创
                            作者:刘常(琴者)
    ——转载请注明作者——
    [效果]
    gdt.swf (12.77 KB)
    [要求]按住按钮拖动影片剪辑滚动或在影片剪辑上滚动鼠标齿轮也可以滚动。
    [步骤]
    一、新建影片剪辑,名为“_mc”,输入文字或导入图片;
    二、新建影片剪辑,名为“mask_mc”,画一个长方形,宽280、高300;
    三、新建按钮元件,名为“_btn”,画一个长方形,宽20、高300;
    四、新建图形元件,名为“btnbj_mc”,画一个长方形,宽20、高300;
    五、回到主场景,第一层拖入“_mc”,实例名为_mc;第二层拖入“mask_mc”,实例名为mask_mc;第三层拖入“btnbj_mc”;第四层拖入“_btn”,实例名为_btn;第五层写如下动作:
    //设置遮罩
    _mc.setMask(mask_mc);
    //申明影片剪辑滚动距离变量及按钮和按钮背景影片剪辑的可见性设置
    var ypgdjl:Number = _mc._height-mask_mc._height;
    if (ypgdjl<=0) {
    _btn._visible = 0;
    } else {
    _btn._visible = 1;
    }
    //设置按钮的高度和坐标
    _btn._height = int(mask_mc._height*mask_mc._height/_mc._height);
    _btn._x = mask_mc._width;
    _btn._y = mask_mc._y;
    //按钮按下开始拖动并设置影片剪辑的坐标
    var btntdjl:Number = mask_mc._height-_btn._height;
    _btn.onPress = function() {
    delete _mc.onEnterFrame;
    startDrag(this, false, mask_mc._width, mask_mc._y, mask_mc._width, btntdjl);
    _mc.onEnterFrame = function() {
    this._y = -(int(_btn._y/btntdjl*ypgdjl));
    };
    };
    _btn.onRelease = _btn.onReleaseOutside=function () {
    stopDrag();
    delete _mc.onEnterFrame;
    };
    //滚动鼠标齿轮并设置影片剪辑滚动及按钮的坐标
    _mc.onRollOver = function() {
    mouseListener = new Object();
    mouseListener.onMouseWheel = function(delta:Number) {
    delete _mc.onEnterFrame;
    _mc._y += delta*8;
    _mc.onEnterFrame = function() {
    _btn._y = -(int(_mc._y*btntdjl/ypgdjl));
    if (this._y>=0) {
    this._y = 0;
    _btn._y = 0;
    delete this.onEnterFrame;
    }
    if (this._y<=-ypgdjl) {
    this._y = -ypgdjl;
    _btn._y = mask_mc._height-_btn._height;
    delete this.onEnterFrame;
    }
    };
    };
    Mouse.addListener(mouseListener);
    };
    _mc.onRollOut = function() {
    Mouse.removeListener(mouseListener);
    };
    [源文件]
    gdt.fla (80 KB)
Open Toolbar