发新话题
打印

[基础] 一个按钮控制声音的播放与暂停

本帖已经被作者加入个人空间

一个按钮控制声音的播放与暂停

开始时声音播放,点击按钮暂停,再点击按钮时继续播放

拖一个按钮在主场景中,实例名为_btn,在帧上写如下代码:
//载入外部声音
my_sound = new Sound();
my_sound.loadSound("http://61.134.25.99/images/upfile/2006-3/2006315131424.mp3", true);
//创建显示声音时间的动态文本
this.createTextField("time_txt", this.getNextHighestDepth(), 100, 100, 0, 0);
time_txt.autoSize = true;
//创建按钮上的动态文本
this.createTextField("btn_txt", this.getNextHighestDepth(), 0, 0, 0, 0);
btn_txt.autoSize = true;
btn_txt._x = _btn._x;
btn_txt._y = _btn._y;
btn_txt.selectable = false;
btn_txt.text = "暂停";
//按钮按下并释放时执行以下函数
_btn.onRelease = function() {
this.id = !this.id;
if (this.id) {
  btn_txt.text = "播放";
  my_sound.stop();
  pausetime = my_sound.position/1000;
}
if (!this.id) {
  btn_txt.text = "暂停";
  my_sound.start(pausetime);
}
};
//运行每一帧时执行以下函数(显示声音的总时间和已播放的时间)
onEnterFrame = function () {
var totalseconds:Number = my_sound.duration/1000;
var minutes:Number = Math.floor(totalseconds/60);
var seconds = Math.floor(totalseconds)%60;
if (seconds<10) {
  seconds = "0"+seconds;
}
var playedseconds:Number = my_sound.position/1000;
var minutesed:Number = Math.floor(playedseconds/60);
var secondsed = Math.floor(playedseconds)%60;
if (secondsed<10) {
  secondsed = "0"+secondsed;
}
time_txt.text = "离家的孩子"+minutesed+":"+secondsed+"—"+minutes+":"+seconds+"(刘常制作)";
};

开始时声音停止,点击按钮播放,再点击按钮时暂停

同样也拖一按钮到主场景,实例名为_btn
my_sound = new Sound();
my_sound.loadSound("http://61.134.25.99/images/upfile/2006-3/2006315131424.mp3", true);
my_sound.stop();
this.createTextField("time_txt", this.getNextHighestDepth(), 100, 100, 0, 0);
time_txt.autoSize = true;
this.createTextField("btn_txt", this.getNextHighestDepth(), 0, 0, 0, 0);
btn_txt.autoSize = true;
btn_txt._x = _btn._x;
btn_txt._y = _btn._y;
btn_txt.selectable = false;
btn_txt.text = "播放";
_btn.onRelease = function() {
this.id = !this.id;
if (this.id) {
  btn_txt.text = "暂停";
  my_sound.start(pausetime);
}
if (!this.id) {
  btn_txt.text = "播放";
  my_sound.stop();
  pausetime = my_sound.position/1000;
}
};
onEnterFrame = function () {
var totalseconds:Number = my_sound.duration/1000;
var minutes:Number = Math.floor(totalseconds/60);
var seconds = Math.floor(totalseconds)%60;
if (seconds<10) {
  seconds = "0"+seconds;
}
var playedseconds:Number = my_sound.position/1000;
var minutesed:Number = Math.floor(playedseconds/60);
var secondsed = Math.floor(playedseconds)%60;
if (secondsed<10) {
secondsed = "0"+secondsed;
}
time_txt.text = "离家的孩子"+minutesed+":"+secondsed+"—"+minutes+":"+seconds+"(刘常制作)";
};

以上语句中比较难理解的是
_btn.onRelease = function() {
this.id = !this.id;
if (this.id) {
  btn_txt.text = "播放";
  my_sound.stop();
  pausetime = my_sound.position/1000;
}
if (!this.id) {
  btn_txt.text = "暂停";
  my_sound.start(pausetime);
}
};

this.id理解成真,this.id=!this.id理解成把真传递给非真(即假)
如果还不理解,干脆把语句改写成如下:
var d:Number = 0;
_btn.onRelease = function() {
        d++;
        if (d%2 == 1) {//d除以2的余数为1,即奇数次点击按钮
                btn_txt.text = "播放";
                my_sound.stop();
                pausetime = my_sound.position/1000;
        }
        if (d%2 == 0) {//d除以2的余数为0,即偶数次点击按钮
                btn_txt.text = "暂停";
                my_sound.start(pausetime);
        }
};
[效果]

[[i] 本帖最后由 qinz 于 2007-10-2 09:40 编辑 [/i]]

附件

播放与暂停.swf (727 Bytes)

2007-10-1 21:28, 下载次数: 298

播放与暂停.fla (24 KB)

2007-10-1 21:28, 下载次数: 275

播放与暂停1.swf (731 Bytes)

2007-10-1 21:31, 下载次数: 184

播放与暂停1.fla (32 KB)

2007-10-1 21:31, 下载次数: 225

TOP

if (secondsed<10) {
  secondsed="0"+secondsed;
}
time_txt.text = "离家的孩子"+minutesed+":"+secondsed+"—"+minutes+":"+seconds+"(刘常制作)";
};

TOP

谢谢!不过在Discuz!代码模式下禁用Discuz!,设置字体格式就不能实现了。

[ 本帖最后由 qinz 于 2007-10-2 14:21 编辑 ]

TOP

太麻烦

my_sound = new Sound();
my_sound.loadSound("http://photo.jufriend.com/music/难道爱一个人有错吗.mp3", true);
my_sound.stop();
this.createTextField("time_txt", this.getNextHighestDepth(), 100, 100, 0, 0);
time_txt.autoSize = true;
this.createTextField("btn_txt", this.getNextHighestDepth(), 0, 0, 0, 0);
btn_txt.autoSize = true;
btn_txt._x = _btn._x;
btn_txt._y = _btn._y;
btn_txt.selectable = false;
btn_txt.text = "我爱你";
_btn.onRelease = function() {
this.id = !this.id;
if (this.id) {
  btn_txt.text = "love you";
  my_sound.start(pausetime);
}
if (!this.id) {
  btn_txt.text = "我爱你";
  my_sound.stop();
  pausetime = my_sound.position/1000;
}
};


参考了下你的代码,然后我自己删掉一部分。

TOP

引用:
原帖由 falwanje 于 2007-10-9 06:55 发表
my_sound = new Sound();
my_sound.loadSound("http://photo.jufriend.com/music/难道爱一个人有错吗.mp3", true);
my_sound.stop();
this.createTextField("time_txt", this.getNextHighestDepth(), 100, 1 ...
你创建的time_txt动态文本显示什么东西?

TOP

主要部分结合了一下是这样的:

主要部分结合了一下是这样的:

/*拖一个按钮到主场景中,实例名为_btn,在帧上写如下代码*/
//载入外部声音,也可载入库中声音
my_sound = new Sound();
my_sound.loadSound("神秘花园.mp3", true);
//主场景中在按钮上添加一个实例名为btn_txt的动态文本
btn_txt.selectable = false;
//可选失败
btn_txt.text = "暂停";
//按钮按下并释放时执行以下函数
_btn.onRelease = function() {
this.id = !this.id;
if (!this.id) {
  btn_txt.text = "暂停";
  my_sound.start(pausetime);
  //从上一次停止的位置开始继续播放
}
if (this.id) {
  btn_txt.text = "播放";
  my_sound.stop();
  pausetime = my_sound.position/1000;
  //记录下停止时播放的位置
}
};

@@另一种方法@@

/*拖一个按钮到主场景中,实例名为_btn,在帧上写如下代码*/
//载入外部声音,也可载入库中声音
my_sound = new Sound();
my_sound.loadSound("神秘花园.mp3", true);
//主场景中在按钮上添加一个实例名为btn_txt的动态文本
btn_txt.selectable = false;
//可选失败
btn_txt.text = "暂停";
//按钮按下并释放时执行以下函数
var d:Number = 1;
//自定义参数
_btn.onRelease = function() {
d++;
if (d%2 == 0) {
  //d除以2的余数为0,即偶数次点击按钮
  btn_txt.text = "播放";
  my_sound.stop();
  pausetime = my_sound.position/1000;
}
if (d%2 == 1) {
  //d除以2的余数为1,即奇数次点击按钮
  btn_txt.text = "暂停";
  my_sound.start(pausetime);
}
};

开始时声音播放,点击按钮暂停,再点击按钮时继续播放

TOP

超简单的方法

/*新建一个影片剪辑,实例名为:music_mc*/

on (press) {
        //按下按钮
        if (i == 1) {
                //如果变量播放等于1执行下面的动作
                music_mc.play();
                // 音乐 mc播放
                i = 0;
                //赋 0 给变量i
        } else {
                //否则执行下面的 动作
                music_mc.stop();
                //音乐 mc停止
                i = 1;
                //赋予 1 给变量i
        }
}

TOP

刚好要用,刚好看到,谢谢大家

TOP

好东西

TOP

发新话题