注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

FlyingWind

 
 
 

日志

 
 
 
 

Flash音量控件(actionscript 3.0)  

2008-08-27 16:24:07|  分类: Flash制作教程 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
Flash音量控件(actionscript 3.0)

      如果你是flash爱好者,在制作flash插入背景音乐时,你是否想过人工控制音量的大小。我想你一定想过,也许你已经有你自己的方法。没关系,多多益善。下面我来介绍一下我是怎样实现的。
      flash中本身有一个控件volumeBar。但是我不知道怎么用且外观我也不喜欢。因而我也就没有去研究怎样使用它。而是自己动手用actionscript 3.0脚本语言开发一个类来实现此功能。源代码附在本日志的后面,你可以直接复制它,并存为VolumeControl.as文件。
      现在向你介绍怎样使用这个类:
1.你使用的Flash制件软件的版本应为9.0(adobe flash cs3)以上的版本,能支持actionscript 3.0脚本语言。
2.复制本日志后面的源代码,保存为
VolumeControl.as文件(请注意大小写且不要改名)。
3.打开Flash制作软件,新建一个actionscript 3.0的Flash文件。
4.在菜单中执行,“文件”->“发布设置”。弹出发布设置对话框,选择flash选项卡点击actionscript版本后面的设置(如下图),

点击后会弹出actionscript3.0设置对话框,如下图:点击右边圈内按钮设置类路径:(即VolumeControl.as文件保存的路径),设置好后确定。此时你已经完成三分之一的工作了,如果你累了,先休息一会。

5.将你要播放的歌曲导入到库。然后再库选项卡中右击,如下图:

再点击链接...,弹出链接属性对话框。设置如下图:下图中的类名music你可以自己改为你喜欢的名字,建议用英文且以字母开头,注意大小写。此步骤非常重要,后面Sound对象时将会用到这个类名。

当你看到这段文字的时候你已经完成了80%了,非常简单吧!!

6.新建一个图层在第一帧中插入下列代码:

var sc:VolumeControl=new VolumeControl(new music());
sc.x=50;
sc.y=50;
this.addChild(sc);
sc.addEventListener(MouseEvent.MOUSE_WHEEL,sc.wheelControl);
sc.addEventListener(MouseEvent.CLICK,sc.clickControl);

上面sc可以用自己喜欢的名字。你是否注意到了上面的new music().。这就是上面说到的类应与链接属性中设置的类名相同。
sc.x=50;
sc.y=50;这二行用于设置音量控件的位置,你可以改变其值,将它放到你要的位置。
sc.addEventListener(MouseEvent.MOUSE_WHEEL,sc.wheelControl);这一行为音量控件添加鼠标滚轮事件。
sc.addEventListener(MouseEvent.CLICK,sc.clickControl);这一行为音量控件添加鼠标点击事件。

到这里你已经完成了全部制作,很简单吧》
如果你想用网络上的歌曲,你可以先建一个Sound对象,然后作为参数传给VolumeControl。


下面是我做的一个例子:
http://up.qzone.net.cn/qzone.net.cn/20080827042502_volumeControl.swf
由于浏览器会捕捉鼠标滚轮事件,使flash在网页上无法捕获到,你可能在下面的flash中无法测试,你可以下载后再试。但是你可以点击

  





/*
 * Volume Control
 * -----------------
 * Written by Dai yiyuan
 *
 *   My blog address
 *  http://colorfuldiary.blog.163.com
 *
 * Please mail me if you
 *    - 've found bugs
 *    - like this program
 *    - don't like a particular feature
 *    - would like something to be modified
 *
 *  If you want to use this program ,please read the following first
 *
 * ----This is a sample of using VolumeControl program----
 *
 *var sc:VolumeControl=new VolumeControl(snd);//snd is a object instance of Sound
 *sc.x=200;
 *sc.y=200;
 *this.addChild(sc);
 *sc.addEventListener(MouseEvent.MOUSE_WHEEL,sc.wheelControl);
 *sc.addEventListener(MouseEvent.CLICK,sc.clickControl);
*/
package {
    import flash.events.MouseEvent;
    import flash.media.Sound;
    import flash.media.SoundChannel;
    import flash.media.SoundTransform;
    import flash.display.MovieClip;
    import flash.display.Graphics;
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.text.TextField;
    import flash.filters.BevelFilter;
    import flash.filters.BitmapFilterType;
    import flash.filters.BitmapFilterQuality;

    public class VolumeControl extends MovieClip {
        var snd:Sound;
        var trans:SoundTransform=new SoundTransform(0.5,0);
        var channel:SoundChannel;

        var volumebar:MovieClip=new MovieClip();

        var bar:Sprite=new Sprite();
        var volumebar0:Sprite=new Sprite();
        var volumebar1:Sprite=new Sprite();

        var txt:TextField=new TextField();

        public function VolumeControl(snd:Sound) {
            this.snd=snd;
            createClips();
            channel=snd.play(0,1,trans);
            volumebar0.scaleX=0.5;
            bar.x=50;
            this.addChild(volumebar);
        }
        public function wheelControl(evt:MouseEvent):void {
            if (evt.delta > 0) {
                if (bar.x < 100) {
                    bar.x+= 1;
                    volumebar0.scaleX=bar.x / 100;
                    trans.volume=2 * volumebar0.scaleX;
                    channel.soundTransform=trans;
                }
            } else {
                if (bar.x > 0) {
                    bar.x+= -1;
                    volumebar0.scaleX=bar.x / 100;
                    trans.volume=2 * volumebar0.scaleX;
                    channel.soundTransform=trans;
                }
            }
        }
        public function clickControl(evt:MouseEvent):void {
            if (volumebar1.mouseX>0 &&volumebar1.mouseX<100) {
                bar.x=volumebar1.mouseX;
                volumebar0.scaleX=bar.x / 100;
                trans.volume=2 * volumebar0.scaleX;
                channel.soundTransform=trans;
            }
        }
        private function createClips():void {

            var bevel:BevelFilter=new BevelFilter;
            bevel.distance=5;
            bevel.angle=45;
            bevel.highlightColor=0xffffff;
            bevel.highlightAlpha=0.8;
            bevel.shadowColor=0xFF0000;
            bevel.shadowAlpha=1;
            bevel.blurX=2;
            bevel.blurY=2;
            bevel.strength=1;
            bevel.quality=BitmapFilterQuality.LOW;
            bevel.type=BitmapFilterType.INNER;
            bevel.knockout=false;
            var bevel1:BevelFilter=new BevelFilter;
            bevel1.distance=5;
            bevel1.angle=45;
            bevel1.highlightColor=0xffffff;
            bevel1.highlightAlpha=0.8;
            bevel1.shadowColor=0x6600ff;
            bevel1.shadowAlpha=1;
            bevel1.blurX=2;
            bevel1.blurY=2;
            bevel1.strength=1;
            bevel1.quality=BitmapFilterQuality.LOW;
            bevel1.type=BitmapFilterType.INNER;
            bevel1.knockout=false;
            var bevel2:BevelFilter=new BevelFilter;
            bevel2.distance=5;
            bevel2.angle=45;
            bevel2.highlightColor=0xffffff;
            bevel2.highlightAlpha=0.8;
            bevel2.shadowColor=0xcc6600;
            bevel2.shadowAlpha=1;
            bevel2.blurX=2;
            bevel2.blurY=2;
            bevel2.strength=1;
            bevel2.quality=BitmapFilterQuality.LOW;
            bevel2.type=BitmapFilterType.INNER;
            bevel2.knockout=false;

            volumebar1.graphics.beginFill(0x6600ff);
            volumebar1.graphics.drawRoundRect(0,-4,100,8,8);
            volumebar1.graphics..endFill();
            volumebar1.filters=[bevel1];
            volumebar.addChild(volumebar1);
            volumebar0.graphics.beginFill(0xff0000);
            volumebar0.graphics.drawRoundRect(0,-4,100,8,8);
            volumebar0.graphics..endFill();
            volumebar0.filters=[bevel];
            volumebar.addChild(volumebar0);
            bar.graphics.beginFill(0xcc6600);
            bar.graphics.drawRoundRect(-4,-8,8,16,4);
            bar.graphics..endFill();
            bar.filters=[bevel2];
            volumebar.addChild(bar);
            txt.appendText("音量");
            txt.height =20;
            txt.x=110;
            txt.y=-txt.height/2;
            volumebar.addChild(txt);
        }

    }
}
  评论这张
 
阅读(1874)| 评论(11)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017