loadSound - position
HejJeg har en mp3 afspiller med en tilhørende playliste.
Selve afspilleren virker umiddelbart som den skal, og man kan fint hoppe rundt i et track via scrubber baren (function gen_bar). Men idet man skipper til et nyt track vil min scrubber bar ikke nulstille sig, og kører i stedet videre fra den position det forrige track havde inden man skippede track. Dog starter det nye track som det skal fra tiden 0
Jeg har 2 trace():
trace('sat tid: '+player_time_current); // ved skip track udskriver den 0
trace('position: '+player_stream.position); // ved skip track udskriver den tiden man hopper ud af forrige track
Hvis man hopper til en anden tid i det samme track udskriver begge trace() identiske og korrekte værdier
Skip til nyt track:
load_player(id);
Jeg har en anelse om at fejlen sker i linje 57 ved:
player_time_current = player_stream.position / 1000;
function load_player(id, no_autoplay)
{
if(id)
{
for(var i = 0; i < plylst_id_arr.length; i++)
{
if(plylst_id_arr[i] == id)
{
delete mcPlayer_barScrubber.onEnterFrame;
player_id_load = id;
player_time_current = 0;
player_stream.onLoad = function()
{
player_time_total = player_stream.duration / 1000;
}
player_stream.loadSound("mp3/"+player_id_load+".mp3", true);
if(no_autoplay) player_stream.stop();
else ctrl_play(true);
gen_bar();
break;
}
}
}
}
function ctrl_play(force_play)
{
if(force_play) player_streamOn = false;
if(player_streamOn)
{
player_stream.stop();
player_streamOn = false;
btnPlay.gotoAndStop(1);
delete mcPlayer_barScrubber.onEnterFrame;
}
else
{
player_stream.start(player_time_current);
player_streamOn = true;
btnPlay.gotoAndStop(2);
var percent = 0;
trace('sat tid: '+player_time_current);
trace('position: '+player_stream.position);
mcPlayer_barScrubber.onEnterFrame = function()
{
player_time_current = player_stream.position / 1000;
percent = Math.floor(player_time_current / player_time_total * 100);
this._xscale = percent;
txt.text = player_time_current;
if(player_time_current >= player_time_total)
{
delete this.onEnterFrame;
}
}
}
}
function gen_bar()
{
var percent = 0;
mcPlayer_barPreloader.onEnterFrame = function()
{
percent = Math.floor(player_stream.getBytesLoaded() / player_stream.getBytesTotal() * 100);
this._xscale = percent;
if(percent >= 100) delete this.onEnterFrame;
}
mcPlayer_btnScrubber.enabled = true;
mcPlayer_btnScrubber.scrubber = mcPlayer_barScrubber;
mcPlayer_btnScrubber.onPress = function()
{
delete mcPlayer_barScrubber.onEnterFrame;
this.onEnterFrame = function()
{
if(this._xmouse < 0) this.scrubber._xscale = 0;
else if(this._xmouse > this._width) this.scrubber._xscale = 100;
else this.scrubber._xscale = ((this._xmouse * 100) / this._width);
}
}
mcPlayer_btnScrubber.onRelease = mcPlayer_btnScrubber.onReleaseOutside = function()
{
delete mcPlayer_btnScrubber.onEnterFrame;
player_time_current = (player_time_total / this._width) * this._xmouse;
if(player_time_current > player_time_total) player_time_current = player_time_total;
else if(player_time_current < 0) player_time_current = 0;
ctrl_play(true);
}
}
