Flash如何控制动画或声音的停止与播放

时间:2013-07-17 19:26:22  作者:啤酒  阅读:16777215

今天有闪友问到如何控制AS3中的声音问题,用下面的小实例说明:

/*

As3Sound.as

*/

package {

import flash.display.Sprite;

import flash.events.*;

import flash.media.Sound;

import flash.media.SoundChannel;

import flash.net.URLRequest;

import flash.utils.Timer;

import flash.text.TextField;

import flash.text.TextFieldAutoSize;

import flash.filters.DropShadowFilter;

public class As3Sound extends Sprite {

private var url:String = "http://XXX.com/music/XXX.mp3";

private var soundFactory:Sound;

private var channel:SoundChannel;

private var positionTimer:Timer;

private var play_btn:Sprite;

private var stop_btn:Sprite;

private var d_filtersropShadowFilter=new DropShadowFilter(5,45,0x000000,80,8,8);

//用于记录音乐现在是否为暂停状态

private var bSoundStop:Boolean = false;

public function As3Sound() {

var sxl_txt:TextField = new TextField();

sxl_txt.text="CS4中如何控制声音的播放或停止的";

sxl_txt.autoSize=TextFieldAutoSize.LEFT;

sxl_txt.x=stage.stageWidth/2-sxl_txt.width/2;

sxl_txt.y=20;

addChild(sxl_txt);

var mp3_request:URLRequest = new URLRequest(url);

soundFactory = new Sound();

//成功加载数据后

soundFactory.addEventListener(Event.COMPLETE, completeHandler);

//在存在可用于 MP3 声音的 ID3 数据时

soundFactory.addEventListener(Event.ID3, id3Handler);

//加载音乐错误时

soundFactory.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);

//音乐加载中...

soundFactory.addEventListener(ProgressEvent.PROGRESS, progressHandler);

soundFactory.load(mp3_request);

channel = soundFactory.play();

//音乐播放完成

channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);

//用Timer监听音乐的播放进度

positionTimer = new Timer(1000);

positionTimer.addEventListener(TimerEvent.TIMER, positionTimerHandler);

positionTimer.start();

//创建一个按钮,用于播放音乐

play_btn = new Sprite();

play_btn.graphics.beginFill(0xFFCC32);

play_btn.graphics.drawRoundRect(0, 0, 70, 18, 10, 10);

play_btn.graphics.endFill();

var play_txt:TextField = new TextField();

play_txt.text = "播放";

play_txt.x=18;

play_btn.x=50;

play_btn.y=100;

play_txt.selectable = false;

play_btn.addChild(play_txt);

play_btn.filters=[d_filters];

play_btn.addEventListener(MouseEvent.CLICK, soundPlay);

addChild(play_btn);

//创建一个按钮,用于停止音乐

stop_btn = new Sprite();

stop_btn.graphics.beginFill(0xFFCC32);

stop_btn.graphics.drawRoundRect(0, 0, 70, 18, 10, 10);

stop_btn.graphics.endFill();

stop_btn.x=130;

stop_btn.y=100;

var stop_txt:TextField = new TextField();

stop_txt.x=18;

stop_txt.text = "暂停";

stop_txt.selectable = false;

stop_btn.addChild(stop_txt);

stop_btn.filters=[d_filters];

stop_btn.addEventListener(MouseEvent.CLICK, soundStop);

addChild(stop_btn);

}

//监听音乐的播放进度

private function positionTimerHandler(event:TimerEvent):void {

var ybf:int = channel.position.toFixed(0);

var zcd:int = soundFactory.length;

var bfs:int = Math.floor(ybf/zcd*100);

//trace("音乐总长度:"+zcd, "音乐已播放:"+ybf, "播放进度为:"+bfs+"%");

}

//加载音乐完成时

private function completeHandler(event:Event):void {

//trace("加载音乐完成: " + event);

}

//在存在可用于MP3声音的ID3数据时

private function id3Handler(event:Event):void {

//trace("音乐的ID3信息如下:");

for (var s in soundFactory.id3) {

//trace("\t", s, ":", soundFactory.id3[s]);

}

//trace("关于ID3信息介绍,请参见Sound类-->属性-->id3");

}

//加载音乐错误时

private function ioErrorHandler(event:Event):void {

//trace("加载音乐错误,错误信息如下:" + event);

positionTimer.stop();

}

//加载音乐时

private function progressHandler(eventrogressEvent):void {

var yjz:int = event.bytesLoaded;

var zcd:int = event.bytesTotal;

var bfs:int = Math.floor(yjz/zcd*100);

//trace("音乐总长度:"+zcd,"已加载: "+yjz, "加载进度为:"+bfs+"%");

}

//音乐播放完成

private function soundCompleteHandler(event:Event):void {

//trace("音乐播放完成: " + event);

positionTimer.stop();

}

//点击播放按钮事件

private function soundPlay(event:MouseEvent):void {

if (bSoundStop) {

bSoundStop = false;

channel = soundFactory.play(channel.position.toFixed(0));

}

}

//点击停止按钮事件

private function soundStop(event:MouseEvent):void {

if (!bSoundStop) {

bSoundStop = true;

channel.stop();

}

}

}

}

BannerZest Pro Mac版 V4.0 电脑
BannerZest Pro Mac版 V4.0
大小:0MB  时间:01.12  赞:28

相关文章

  • Flash教你制作可爱的小青蛙闹钟
    Flash教你制作可爱的小青蛙闹钟

    这个Flash实例制作了一个可爱的“小青蛙时钟”动画,用到了Flash的基本绘图工具如椭圆、矩形、直线和任意变形等,操作简洁易懂,适合练习。

    16777215
  • Flash教你如何制作吹泡泡动画特效
    Flash教你如何制作吹泡泡动画特效

    这个Flash实例制作了一个有趣的“小丑吹泡泡”动画,主要运用了椭圆、直线工具,以及任意变形和渐变填充等,操作简洁易懂,适合练习。先看下效果吧:

    16777215
  • Flash教你如何制作蝙蝠在月夜里飞翔
    Flash教你如何制作蝙蝠在月夜里飞翔

    1、这个小教程用Flash制作了一个蝙蝠在月夜里飞翔的动画,用到了Flash的基本绘图工具以及渐变填充等,操作简洁,适合练习。

    16777215
  • Flash教你如何制作一幅诗意的水墨卷轴展开的动画
    Flash教你如何制作一幅诗意的水墨卷轴展开的动画

    1、北京奥运会开幕式上那充满诗意的卷轴,以及它所呈现给我们的一幅幅无法言喻的美妙画面,大家一定还记忆犹新吧!今天我们就用Flash来制作一幅诗意的水墨卷轴展开的动画,主要用到矩形工具和渐变填充工具,操作简单易懂,适合练习。

    16777215
  • flash制作小猪教程
    flash制作小猪教程

    本教程是使用Flash制作可爱有趣的亲嘴猪动画,讲述如何用简单的绘图工具画出可爱俏皮的小猪以及制作成亲嘴动画。这个Flash实例简单易懂,这个Flash实例制作了两只可爱的小猪亲嘴的动画,用到了Flash的基本绘图工具如椭圆、矩形、直线和任意变形等,操作简单易懂,适合练习。

    16777215
  • flash举笔题诗动画水调歌头制作教程
    flash举笔题诗动画水调歌头制作教程

    1、本教程主要使用了椭圆、矩形和文字工具以及渐变填充,操作实用,适合练习。

    16777215
  • flash动画控制SWF大小的技巧介绍
    flash动画控制SWF大小的技巧介绍

    flash一般做出来都是要拿到网络上去传播的,所以控制他的大小非常重要,试想如果你一个文件做出来几M甚至几十M,那会有几个人有耐心去等他下载完,下面我来说一些造成文件增大原因与解决的方法,因为我们做网络广告的时候,一般一个广告不让超过20K,所以对于控制文件大小比较有经验。

    16777215
  • Flash几张图片首尾连接循环滚动实现方法
    Flash几张图片首尾连接循环滚动实现方法

    要让几张图片循环滚动,最简的原理就是把连续图片再复制一份接到尾部,待第一张图片滚完之后被复制的接着滚动。原理图示如图7-5所示。

    16777215
  • Flash方块动画特效制作教程
    Flash方块动画特效制作教程

    效果如下:

    16777215
  • Flash教你绘制楼梯动画场景
    Flash教你绘制楼梯动画场景

    先看看最终效果:

    16777215