Sound的上次播放时间

      FLASH 2005-9-10 14:53
由于我们的需要.可能页面不断的刷新,我们的音乐可能才听一半.由于页面的刷新,所听音乐还得重新开始.
这种是很让用户感到厌烦的.如果能记住上次所听的时间,那么刷新后再接下去,那不是可以完成用户所要的需求;
下面是音乐的MP3,可刷新测试;
[flash]http://nikemode.com/crl/image/test.swf[/flash]
由于我们的需要.可能页面不断的刷新,我们的音乐可能才听一半.由于页面的刷新,所听音乐还得重新开始.
这种是很让用户感到厌烦的.如果能记住上次所听的时间,那么刷新后再接下去,那不是可以完成用户所要的需求;

我不知道有没有人,研究过这个.没有研究过的话,我就来开个头了;
其实原理就是上面的,记录用刷新前的时间,但是刷新和关闭重开是一样的道理,所有的信息都将刷掉重造.
所以我们必须有个在播放器关闭的事件.
ShardObject的flush就符合这个事件所触发的事件,它会在播放器的关闭和写入的时候触发,所以我们就不显视的调用它,因为我们显视触发它的时候,他就直接写入了.
好了,看了上面的,可能你会乱了点.看看下面的代码吧!

var Shared:SharedObject = SharedObject.getLocal("crl");//取得本地crl数据存储,没有则创造一个;
var s:Sound = new Sound();//声音对像;
var id:String = "10.mp3";//本地歌曲;
_global.tt;//Timer的ID,供后面删除用;
s.loadSound(id,true);//加载,第二个参数不设可以更适合我们这个的要求
if (Shared.data.Duration == null) {//是否有存储过;
//trace("null");没有
    s.start();//则从头播放;
} else {
    //trace("Have more");存在
    var t:Number = Number(Shared.data.Duration);//读取存上次时间
    tt = setInterval(played, 1000, t);/*再过1秒后调用,由于刚加载原理,直接调用将不能产生所要效果;*/
}
function played(T:Number) {
    s.start(T/1000);
    clearInterval(tt);//有调用就删除Timer对像;
}
onEnterFrame = function () {
    Shared.data.Duration = _root.s.position;//记录当前的播放时间.会在关闭时写入;
    //trace(s.position);
};
stop();

原创;可能由于网络问题,听起来会有点问题;
标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}