Avatar billede theselfimages Nybegynder
04. februar 2003 - 15:22 Der er 90 kommentarer og
1 løsning

Hjælp til streamer actionscript

Dette script streamer 9 numre random i en session. Med session mener jeg at ét nummer IKKE kan afspilles 2 gange i løbet af afspilningen af alle 9 munre. Også selv om numrerne vælges og afspilles random.

Men.. problemet er at når en session er overstået (når alle 9 numre hver især er afspillet én gang i tilfældig rækkefølge) .. da stopper afspilleren komplet.
Hvordan får jeg den til at starte helt forfra igen?



playedSongs = new Array();
songCounter = 1;
numberOfSounds = 9;
mySoundObjectPosition = 0;
ranSound = Math.floor(Math.random()*numberOfSounds+1);
mySoundObject = new Sound();
mySoundObject.loadSound("http://windweaver.dk/musik/"+ranSound+".mp3", true);
playedSongs.push(ranSound);
mySoundObject.setVolume(100);
mySoundObject.start(mySoundObjectPosition, 0);
_root.mySoundObject.onSoundComplete = function() {
    playlist();
    _root.mySoundObject.loadSound("http://windweaver.dk/musik/"+ranSound+".mp3", true);
    _root.mySoundObject.start(mySoundObjectPosition, 0);
};
function playlist() {
    ranSound = Math.floor(Math.random()*numberOfSounds+1);
    if (songCounter == numberOfSounds+1) {
        playedSongs = new Array();
        playedSongs.push(ranSound);
        songCounter = 1;
    } else {
        for (i=0; i<=playedSongs.length-1; i++) {
            if (playedSongs[i] == ranSound) {
                ranSound = Math.floor(Math.random()*numberOfSounds+1);
                i = -1;
            }
        }
        playedSongs.push(ranSound);
    }
}
Avatar billede barklund Nybegynder
04. februar 2003 - 15:31 #1
Har du selv lavet scriptet - for det er rimeligt omstændigt og uoptimalt lavet... Må man skrive det om?
Avatar billede theselfimages Nybegynder
04. februar 2003 - 15:39 #2
Nej jeg har fået hjælp her:

http://www.eksperten.dk/spm/301488

Scriptet er baseret på dette:
http://www.flashkit.com/tutorials/Audio/Flash_MX-Kenny_Be-824/more18.php

Og i øvrigt så har jeg også dette problem med script:
http://www.eksperten.dk/spm/311685


Hmm! en del problemer.. men håber meget at du kan hjælpe med det.

Venligst,
Lars
Avatar billede barklund Nybegynder
04. februar 2003 - 15:49 #3
Hmm... paask har lavet lidt ekstra features... Det skal jo huskes... :o)

Skal dit script blot modificeres, så vil jeg da gætte på at du bare mangler at incrementere songCounter (med mindre dette sker et andet sted):

Du er her : Eksperten : Programmer : Flash : Generelt : Hjælp til streamer actionscript :

Sidste nyt fra Eksperten : Køb og salg -> Papkassen
Eksperten vil om 14 dage fjerne de kategorier, der handler om køb og salg. Eksperten er et forum for udveksling af viden og holdninger, og vi foretrækker at holde tingene adskilt. Vi har i forvejen we... læs mere

Hjælp til streamer actionscript
  Spørgsmålet er ikke besvaret.  30 point fra theselfimages

Dette script streamer 9 numre random i en session. Med session mener jeg at ét nummer IKKE kan afspilles 2 gange i løbet af afspilningen af alle 9 munre. Også selv om numrerne vælges og afspilles random.

Men.. problemet er at når en session er overstået (når alle 9 numre hver især er afspillet én gang i tilfældig rækkefølge) .. da stopper afspilleren komplet.
Hvordan får jeg den til at starte helt forfra igen?



playedSongs = new Array();
songCounter = 1;
numberOfSounds = 9;
mySoundObjectPosition = 0;
ranSound = Math.floor(Math.random()*numberOfSounds+1);
mySoundObject = new Sound();
mySoundObject.loadSound("http://windweaver.dk/musik/"+ranSound+".mp3", true);
playedSongs.push(ranSound);
mySoundObject.setVolume(100);
mySoundObject.start(mySoundObjectPosition, 0);
_root.mySoundObject.onSoundComplete = function() {
    playlist();
    _root.mySoundObject.loadSound("http://windweaver.dk/musik/"+ranSound+".mp3", true);
    _root.mySoundObject.start(mySoundObjectPosition, 0);
};
function playlist() {
    ranSound = Math.floor(Math.random()*numberOfSounds+1);
    if (songCounter == numberOfSounds+1) {
        playedSongs = new Array();
        playedSongs.push(ranSound);
        songCounter = 1;
    } else {
        songCounter++;
        for (i=0; i<=playedSongs.length-1; i++) {
            if (playedSongs[i] == ranSound) {
                ranSound = Math.floor(Math.random()*numberOfSounds+1);
                i = -1;
            }
        }
        playedSongs.push(ranSound);
    }
}


Men det ville nu have bedst af, at blive skrevet om... Det kræver dog, at du også lige fortæller hvilket script der ligger på de enkelte knapper...
Avatar billede theselfimages Nybegynder
04. februar 2003 - 15:49 #4
Du kan iøvrigt teste scriptet som det er vist øverst.
Her: www.vespertine.dk ... prøv at lad nummeret (der kun ét) spille ud
og vent og se hvad der sker. Flash kommer med en ALERT BOX ...
meget forunderligt. (Playeren virker kun med den nyeste Flash 6 player)
Avatar billede barklund Nybegynder
04. februar 2003 - 15:53 #5
Jeg kan ikke teste det og jeg forstår godt alert-boksen, da dit script går i endless loop på grund af den noget ringe implementering af en "randomizer" :o)
Avatar billede theselfimages Nybegynder
04. februar 2003 - 15:54 #6
Ok.. kan jeg evt. maile dig hele scriptet? Den udgave jeg henviser til med linket: www.vespertine.dk skal kun afspille ét nummer (9 sættes til 1), men jeg bruger selv scriptet på mit eget site i en anden udgave med PLAY, PAUSE og STOP knap. Her afspilles 9 numre. Det er den version jeg vil maile dig.
Avatar billede theselfimages Nybegynder
04. februar 2003 - 15:58 #7
Hvis du checker den afspiller der er vist nederst på denne side:
http://www.flashkit.com/tutorials/Audio/Flash_MX-Kenny_Be-824/more18.php

vil du bemærke at der gjort brug af et sæt varibler der styrer korrekt afspilning i forhold til Pause og Play og Stop. Disse varibler er IKKE incrementeret i mit eget script, hvilket gør at dette spørgsmål er oprettet:
http://www.eksperten.dk/spm/311685
Avatar billede nikolajdu Nybegynder
04. februar 2003 - 16:00 #8
stemningsfuldt må man da sige :))
Avatar billede theselfimages Nybegynder
04. februar 2003 - 16:02 #9
Vil det være muligt at modificerer det nederste script på siden her:
(da dette ser ud til at være testet og virker)
http://www.flashkit.com/tutorials/Audio/Flash_MX-Kenny_Be-824/more18.php

med en PAUSE funktion + en holdbar Random afspilningsfunktion?
Det skal nævnes at mit eget nuværende script IKKE har en start knap, men at det afspiller første random nummer ved onLoad.
Avatar billede barklund Nybegynder
04. februar 2003 - 16:06 #10
Jeg har ikke flash ej heller en flash player... Derfor kan jeg ikke bruge kildefiler eller links, men kun rå kode... Hvilket også er The True Flash Way :o)
Avatar billede theselfimages Nybegynder
04. februar 2003 - 16:06 #11
Mit egen version af scriptet bruges her:
www.theselfimages.dk (klik til en underside)
Det afspiller 9 numre og har som sagt i modsætning til den version på www.vespertine.dk er sæt funktionsknapper.

Hele scriptet på The Self Images ser således ud, inkl. funktionsknapperne:


playedSongs = new Array();
songCounter = 1;
numberOfSounds = 9;
mySoundObjectPosition = 0;
ranSound = Math.floor(Math.random()*numberOfSounds+1);
mySoundObject = new Sound();
mySoundObject.loadSound("http://domæne.dk/musik/"+ranSound+".mp3", true);
playedSongs.push(ranSound);
mySoundObject.setVolume(100);
mySoundObject.start(mySoundObjectPosition, 0);
_root.mySoundObject.onSoundComplete = function() {
    playlist();
    _root.mySoundObject.loadSound("http://domæne.dk/musik/"+ranSound+".mp3", true);
    _root.mySoundObject.start(mySoundObjectPosition, 0);
};
function playlist() {
    ranSound = Math.floor(Math.random()*numberOfSounds+1);
    if (songCounter == numberOfSounds+1) {
        playedSongs = new Array();
        playedSongs.push(ranSound);
        songCounter = 1;
    } else {
        for (i=0; i<=playedSongs.length-1; i++) {
            if (playedSongs[i] == ranSound) {
                ranSound = Math.floor(Math.random()*numberOfSounds+1);
                i = -1;
            }
        }
        playedSongs.push(ranSound);
    }
}



PLAY KNAP:

on(press) {
_root.mySoundObject.start(mySoundObjectPosition,0);
_root.mySoundObject.onSoundComplete = function() {
    playlist();
    _root.mySoundObject.loadSound("http://windweaver.dk/musik/"+ranSound+".mp3", true);
    _root.mySoundObject.start(mySoundObjectPosition, 0);
};
}



PAUSE KNAP:

on(press) {
    mySoundObjectPosition=_root.mySoundObject.position/1000;
    mySoundObject.stop()
}



STOP KNAP:

on(press) {
    mySoundObject.stop()
    mySoundObjectPosition=0;
}
Avatar billede theselfimages Nybegynder
04. februar 2003 - 16:09 #12
Okay men så må ovenstående være hvad du har brug for :)
Det er i hvert fald hele scriptet som det bruges pt. på The Self Images (mit personlige portfolio).

Denne linie skulle ha' været skrevet med DOMÆNE.DK i stedet for det der står.
  _root.mySoundObject.loadSound("http://windweaver.dk/musik/"+ranSound+".mp3", true);
Avatar billede barklund Nybegynder
04. februar 2003 - 16:31 #13
Sådan:

SongPlayer = new function(path,number) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong();
}
SongPlayer.prototype.play = function() {
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}


Og så skal du instantiere med:

mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9);

På play-knappen:

on (press) {
    if (mySongPlayer.isPaused()) {
        mySongPlayer.resume();
    } else {
        mySongPlayer.play();
    }
}

På pause-knappen:

on (press) {
    mySongPlayer.pause();
}

På stop-knappen:

on (press) {
    mySongPlayer.stop();
}


Jeg garanterer ikke, at den virker, da jeg ikke kan teste det, men bare har skrevet det lige ud i luften :o)
Avatar billede theselfimages Nybegynder
04. februar 2003 - 16:35 #14
Der blev helt stille.. hmm!
Håber det betyder at du har hvad du skal bruge.
Og at du vil gi' et forsøg.

Mvh. Lars
Avatar billede theselfimages Nybegynder
04. februar 2003 - 16:39 #15
Dette forstår jeg ikke helt:

Og så skal du instantiere med:

mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9);
Avatar billede theselfimages Nybegynder
04. februar 2003 - 16:53 #16
Hmm.. med mindre jeg gør et eller andet helt galt, så ser den desværre ikke ud til at virke... :(

Lidt i tvivl om hvad denne linie skal stå:
mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9);
Avatar billede barklund Nybegynder
04. februar 2003 - 17:01 #17
Du skal skrive den lige efter definitionen af klassen og dens funktioner... Altså lige efter

SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9);
Avatar billede barklund Nybegynder
04. februar 2003 - 17:12 #18
virker det?
Avatar billede theselfimages Nybegynder
04. februar 2003 - 17:31 #19
Hmm! faktisk skulle det være sådan, at lige så snart flashfilen loades begynder den at spille. Så denne: mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9); skal vel både sidde på PLAY knappen og på selve scriptet, ikke?

Vil du vise det? Så intet går galt?
Avatar billede theselfimages Nybegynder
04. februar 2003 - 17:33 #20
kan jeg med dit script uden videre ha' den til at afspille KUN ét nummer?
Altså ved at ændre denne: mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9); til ",1 i stedet for ",9 ... ?

Vil den da afspille nummeret og starte det forfra efter det slutter?
Avatar billede barklund Nybegynder
04. februar 2003 - 17:36 #21
Nope... du skal bare kalde en play() lige efter, at den er loaded:

SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9);
mySongPlayer.play();

Ideen ville ligesom være forsvundet, hvis man skulle definere den 2 steder! Men ja, du kan bare ændre det til et 1-tal og så er der kun en sang...
Avatar billede barklund Nybegynder
04. februar 2003 - 17:37 #22
Vi kan også tilføje det som en parameter:

SongPlayer = new function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) this.play();
}

Så kan du instantiere med:

mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9,true);

Eller "false" hvis du pludselig ikke ønsker, at den skal starte med at afspille...
Avatar billede theselfimages Nybegynder
04. februar 2003 - 17:43 #23
Ja.. det ville være en god idé. Vil du prøve vise hele script da?
Avatar billede barklund Nybegynder
04. februar 2003 - 18:03 #24
Jaa... Scriptet på knapperne er det samme som før - i framen er det nu:

Sådan:

SongPlayer = new function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) this.play();
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong();
}
SongPlayer.prototype.play = function() {
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://domæne.dk/musik/",9,true);
Avatar billede theselfimages Nybegynder
04. februar 2003 - 18:03 #25
Som det ser ud nu kan jeg ikke få den til at afspille/streame noget musik.
Det skal nævnes at jeg i min Flash fil har 2 lag.

På det første lag, ligger i frame1 en keyframe forpå selve script lægges.
På det andet lag, ligger i frame1 de 3 knapper der hver især pålægges script for Play, Stop, Pause...
Avatar billede barklund Nybegynder
04. februar 2003 - 18:10 #26
Jaja... Jeg har jo heller ikke påstået, at det virker... Virkede det før, hvis du bare testede inden fra flash's eget test-miljø? for så kan vi debugge der...
Avatar billede theselfimages Nybegynder
04. februar 2003 - 18:16 #27
Har lige fået gæster... Vender tilbage senere. Tak for nu.
Avatar billede theselfimages Nybegynder
04. februar 2003 - 19:01 #28
Hmm.. lagde sidste version af script ind og testede det med rigtig URL henvisning, men der er komplet STILHED! :(

Nogen idé om hvad problemet kan være?
Avatar billede theselfimages Nybegynder
05. februar 2003 - 10:43 #29
Håber ikke du har givet op i hvert fald.
Kan du evt. hente nogen hjælp her:
http://www.flashkit.com/tutorials/Audio/Flash_MX-Kenny_Be-824/more18.php

Check evt. tutorial nr. 16.

:)

Mvh. Lars
Avatar billede theselfimages Nybegynder
06. februar 2003 - 10:43 #30
HAR DU HELT OPGIVET?
Gi' venligst lyd!
Avatar billede barklund Nybegynder
06. februar 2003 - 12:50 #31
Absolut ikke... Onsdag er jeg på arbejde og så er jeg altid super stresset...

Men nu er jeg igen tilbage på mit studie og har derfor ikke så meget at lave :o)

Lad os debugge lidt:

Udskift den forrige play() med denne:

SongPlayer.prototype.play = function() {
    trace("about to play "+this.currentSong);
    this.playSong(this.currentSong,0);
}
Avatar billede theselfimages Nybegynder
06. februar 2003 - 13:06 #32
Hmm.. forstår ikke helt hvor vi er henne nu.
Du blir vist nødt tilbage at vise det.
Avatar billede barklund Nybegynder
06. februar 2003 - 13:51 #33
Et sted i al den kode, som jeg har postet et par gange, stå der en

SongPlayer.prototype.play

Denne funktion skal blot tilføjes ovenstående trace-linie...
Avatar billede theselfimages Nybegynder
06. februar 2003 - 13:56 #34
OK! nu ser det sådan her ud, men hvad skulle forskellen være?
Den spiller i hvert fald ikke.


SongPlayer = new function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) this.play();
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong();
}
SongPlayer.prototype.play = function() {
trace("about to play "+this.currentSong);
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/",9,true);
Avatar billede barklund Nybegynder
06. februar 2003 - 14:40 #35
At den skriver nogle variabler ud til dit output vindue... Det gør trace()-funktionen jo...

Hvad sker der, når du står i flash og trykker Ctrl+enter for at teste din film. Sker der noget? Kommer der ikke et output vindue, hvori der står noget med "about to play..." og noget mere?

Det handler om, at jeg ikke selv har flash, så derfor prøver jeg på at finde ud af, hvad der er galt med ovenstående script via dig. Har du overhovedet arbejdet i flash før, for ovenstående proces med at tilføje traces for at finde sine fejl er helt almindelig og nødvendig, da man sjældent laver det rigtigt i første forsøg...

Så nej, at jeg tilføjer en lille med trace() for det ikke til at virke, men giver mig en lille ide om, hvor fejlen er...

/Barklund
Avatar billede theselfimages Nybegynder
06. februar 2003 - 14:53 #36
Hvis ovenstående script med din seneste tilføjelse er rigtig, ved jeg ikke.
For den viser ingen intet Output (jeg kender godt til metoden) men der sker altså som sagt intet. Hvad med at downloade den gratis 30 dages version af Flash?

Desværre kan jeg intet prej give dig om hvor vi står.. :(
Avatar billede barklund Nybegynder
06. februar 2003 - 15:03 #37
Jeg sidder på en Sun Solaris terminal så jeg kan ikke hente flash :o)

Men jeg kan se en fuldstændig fatal fejl, som jeg har lavet:

Der skal absolut ikke stå "new function" nogen steder... Derfor er første del (klassen) istedet:

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) this.play();
}

Så burde der ske noget...
Avatar billede theselfimages Nybegynder
06. februar 2003 - 15:14 #38
Nu ser det sådan ud! Men stadig intet hverken Output eller musik...


SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) this.play();
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong();
}
SongPlayer.prototype.play = function() {
trace("about to play "+this.currentSong);
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/",9,true);
Avatar billede barklund Nybegynder
06. februar 2003 - 16:08 #39
Hmm... så smækker vi et væld at traces ind:

SongPlayer = function(path,number,autoplay) {
    trace("initialized with ("+path+", "+number+", "+autoplay+")");
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) {
        trace("autoplaying... via "+typeof this.play);
        this.play();
    }
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong();
}
SongPlayer.prototype.play = function() {
    trace("about to play "+this.currentSong);
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
trace("mySongPlayer is "+typeof mySongPlayer+", made by "+typeof SongPlayer);
Avatar billede barklund Nybegynder
06. februar 2003 - 16:10 #40
Hovsa... det er også en fejl i playSong:

SongPlayer = function(path,number,autoplay) {
    trace("initialized with ("+path+", "+number+", "+autoplay+")");
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) {
        trace("autoplaying... via "+typeof this.play);
        this.play();
    }
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    trace("streaming "+this.path+num+".mp3 at "+time);
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong();
}
SongPlayer.prototype.play = function() {
    trace("about to play "+this.currentSong);
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
trace("mySongPlayer is "+typeof mySongPlayer+", made by "+typeof SongPlayer);

Sådan! :o)
Avatar billede theselfimages Nybegynder
06. februar 2003 - 16:24 #41
Stadig INTET overhovedet. Ingen Outputs fra traces eller LYD!
Avatar billede barklund Nybegynder
06. februar 2003 - 16:52 #42
Det kan ikke passe... Som du kan se, så står der "trace(mySongPlayer is ...)" uden for nogen funktion, altså direkte i frame-scriptet... Denne trace vil blive kørt, med mindre der er en fejl i scriptet (hvilket vil stå i et trace-vindue)... Ergo bliver dit script enten ikke kørt eller også er dit output vindue uden for skærmen...

Prøv efter du har trykket Ctrl-enter at tryke Ctrl+Alt+V - det skal sende alle variabler i filmen til dit output-vindue...
Avatar billede theselfimages Nybegynder
06. februar 2003 - 17:01 #43
Okay... ja det hjalp.. men jeg skal altså trykke Ctrl+Alt+V for at se den Outputbox.. men det er vel fordi der ikke er deciderede fejl at den ikke kommer frem. Med Ctrl+Alt+V udskrev alt dette:

Level #0:
Variable _level0.$version = "WIN 6,0,4,0"
Variable _level0.SongPlayer = [function] {
    prototype:[object #2, class 'Object'] {
      initList:[function 'initList'],
      playSong:[function 'playSong'],
      play:[function 'play'],
      nextSong:[function 'nextSong'],
      stop:[function 'stop'],
      pause:[function 'pause'],
      resume:[function 'resume'],
      isPaused:[function 'isPaused']
    }
  }
Variable _level0.mySongPlayer = [object #11] {
    path:"http://www.theselfimages.dk/images/music/",
    number:9,
    unused:[object #12, class 'Array'] [
      0:5,
      1:4,
      2:7,
      3:9,
      4:1,
      5:6,
      6:8
    ],
    currentSong:3,
    sound:[object #13, class 'Sound'] {
      onSoundComplete:undefined
    }
  }
Button: Target="_level0.instance1"
Variable _level0.instance1.tabIndex = [getter/setter] undefined
Button: Target="_level0.instance2"
Variable _level0.instance2.tabIndex = [getter/setter] undefined
Button: Target="_level0.instance3"
Variable _level0.instance3.tabIndex = [getter/setter] undefined
Avatar billede barklund Nybegynder
06. februar 2003 - 18:15 #44
Prøv en gang at åbne dine publish settings (vist nok Ctrl+Shift+F12) og under "flash" skal du sikre dig, at der ikke er et hak i "omit traces"... Derudover er der en anden fejl i mit script, så prøv følgende:



SongPlayer = function(path,number,autoplay) {
    trace("initialized with ("+path+", "+number+", "+autoplay+")");
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(this);
    if (autoplay) {
        trace("autoplaying... via "+typeof this.play);
        this.play();
    }
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    trace("streaming "+this.path+num+".mp3 at "+time);
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong;
}
SongPlayer.prototype.play = function() {
    trace("about to play "+this.currentSong);
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
trace("mySongPlayer is "+typeof mySongPlayer+", made by "+typeof SongPlayer);
Avatar billede theselfimages Nybegynder
06. februar 2003 - 20:45 #45
Omit Trace har hele tiden var slået til.
Prøvede med den seneste version, men stadig ingen musik
Dette er output:


Level #0:
Variable _level0.$version = "WIN 6,0,4,0"
Variable _level0.SongPlayer = [function] {
    prototype:[object #2, class 'Object'] {
      initList:[function 'initList'],
      playSong:[function 'playSong'],
      play:[function 'play'],
      nextSong:[function 'onSoundComplete'],
      stop:[function 'stop'],
      pause:[function 'pause'],
      resume:[function 'resume'],
      isPaused:[function 'isPaused']
    }
  }
Variable _level0.mySongPlayer = [object #11] {
    path:"http://www.theselfimages.dk/images/music/",
    number:9,
    unused:[object #12, class 'Array'] [
      0:8,
      1:6,
      2:1,
      3:9,
      4:5,
      5:4,
      6:7,
      7:3,
      -5:undefined
    ],
    currentSong:2,
    sound:[object #13, class 'Sound'] {
      onSoundComplete:[function 'onSoundComplete']
    }
  }
Button: Target="_level0.instance1"
Variable _level0.instance1.tabIndex = [getter/setter] undefined
Button: Target="_level0.instance2"
Variable _level0.instance2.tabIndex = [getter/setter] undefined
Button: Target="_level0.instance3"
Variable _level0.instance3.tabIndex = [getter/setter] undefined
Avatar billede barklund Nybegynder
16. februar 2003 - 12:01 #46
Er lige kommet hjem fra en uges skiferie :o)

I ovenstående output er det jo outputtet fra Ctrl+Alt+V, hvilket ikke er interessant... Prøv istedet blot at køre din film (uden Omit Traces) og fortæl, hvilket output der kommer af dette - du skal eventuelt clear'e dit outputvindue først...
Avatar billede theselfimages Nybegynder
16. februar 2003 - 12:33 #47
Okay... så får jeg dette. Men ingen lyd!

initialized with (http://www.theselfimages.dk/images/music/, 9, true)
autoplaying... via function
about to play 2
streaming http://www.theselfimages.dk/images/music/2.mp3 at 0
mySongPlayer is object, made by function
Avatar billede barklund Nybegynder
16. februar 2003 - 15:09 #48
men ingen lyd?

Det hele ser jo rigtigt ud... prøver lige selv...
Avatar billede barklund Nybegynder
16. februar 2003 - 15:15 #49
Dette script:

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(_root);
    if (autoplay) {
        this.play();
    }
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play(time);
    this.sound.onSoundComplete = this.nextSong;
}
SongPlayer.prototype.play = function() {
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.isPaused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.isPaused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.isPaused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);

Virker PERFEKT når jeg tester det :o)

Altså jeg åbner flash, paster ovenstående ind i første frame som kode der og trykker Ctrl+Enter... Der går nogle sekunder og jeg hører musik-fil...
Avatar billede theselfimages Nybegynder
16. februar 2003 - 17:45 #50
Okay! Hurra!
Det virker nu! Gak!

Men der lige et lille problem med Pause/Play funktionen. Den starter det aktuelle nummer forfra når Play klikkes efter at nummeret har været Paused.

PLAY KNAP:

on (press) {
    if (mySongPlayer.isPaused()) {
        mySongPlayer.resume();
    } else {
        mySongPlayer.play();
    }
}


PAUSE KNAP:

on (press) {
    mySongPlayer.pause();
}



STOP KNAP:

on (press) {
    mySongPlayer.stop();
}
Avatar billede theselfimages Nybegynder
16. februar 2003 - 18:32 #51
Et andet problem er at Playeren faktisk IKKE fortsætter med at spille, når første random nummer er slut. Meningen er jo at den skal spille næste nummer og næste igen, osv. men IKKE det samme nummer mere end én gang inden for en runde.
Avatar billede barklund Nybegynder
17. februar 2003 - 10:08 #52
Prøv følgende script og fortæl hvilket output, der kommer:

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        trace("finished song");
        this.songPlayer.nextSong();
    }
    if (autoplay) {
        this.play();
    }
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play(time);
}
SongPlayer.prototype.play = function() {
    trace("playing song");
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    trace("running next song");
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
    this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    trace("resuming at "+this.position);
    this.paused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    trace("a call to isPaused returning "+this.paused
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
Avatar billede theselfimages Nybegynder
17. februar 2003 - 11:42 #53
Ingen lyd nu, men dette output:

Scene=Scene 1, Layer=on load, Frame=1: Line 52: ')' or ',' expected
        return this.paused;
Avatar billede barklund Nybegynder
17. februar 2003 - 19:51 #54
En mindre stavefejl:

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong();
    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        trace("finished song");
        this.songPlayer.nextSong();
    }
    if (autoplay) {
        this.play();
    }
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play(time);
}
SongPlayer.prototype.play = function() {
    trace("playing song");
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function() {
    trace("running next song");
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
    this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    trace("resuming at "+this.position);
    this.paused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    trace("a call to isPaused returning "+this.paused);
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
Avatar billede theselfimages Nybegynder
17. februar 2003 - 20:24 #55
Okay.. hehe!
Det ser ud til at virke fint med at fortsætte random afspilningen. Men der er stadig det problem med, at den starter nummeret forfra efter PAUSE, i stedet for at fortsætte nummeret hvorfra det blev Paused.
Avatar billede barklund Nybegynder
17. februar 2003 - 22:10 #56
hvilket output kommer der i dit output vindue når du kører ovenstående og pauser og fortsætter nogle gange?
Avatar billede theselfimages Nybegynder
18. februar 2003 - 00:33 #57
Når første random nummer starter automatisk skrives:
(hvorfor "playing song" 2 gange?)

running next song
playing song
playing song

Klikkes PAUSE er der intet OUTPUT før PLAY igen klikkes.
Ved første PAUSE/PLAY blev skrevet:

a call to isPaused returning true
resuming at 5512

Ved anden PAUSE/PLAY blev skrevet:

a call to isPaused returning true
resuming at 25051

I begge tilfælde er der den del forsinkelse når PLAY klikkes efter et nummer har været PAUSED. Begge gange starter nummeret fra start, selv om den i OUTPUT skriver at den RESUMER fra et specifikt sted i nummeret.
Avatar billede barklund Nybegynder
18. februar 2003 - 08:15 #58
Prøv at erstatte:

this.sound.play(time);

Med følgende to linier:

trace("playing song "+num+" at "+time);
this.sound.play(time,0);
Avatar billede theselfimages Nybegynder
18. februar 2003 - 12:32 #59
Det er meget mærkeligt. Det hele ser jo ud at fungere perfekt med den Pause/Play, men.. fra start skrives:

running next song
playing song
playing song 4 at 0
playing song
playing song 4 at 0


Ved Pause/Play skrives:

a call to isPaused returning true
resuming at 35971
playing song 4 at 35971

Men den starter stadig nummeret fra start og IKKE fra resumepoint.
Avatar billede barklund Nybegynder
18. februar 2003 - 14:43 #60
Ahaa!

Når man henter position ud af nummeret, får man positionen i millisekunder, men når man angiver, hvor den skal starte, så er det i sekunder (fandt det via din oprindelige kode):

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        this.songPlayer.nextSong(true);
    }
    this.nextSong(autoplay);
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play(time);
}
SongPlayer.prototype.play = function() {
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function(go_on) {
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
    if (go_on) this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position/1000;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.paused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);

Derudover har jeg også rettet den lille fejl med at den spiller to gange fra starten...
Avatar billede theselfimages Nybegynder
18. februar 2003 - 20:52 #61
Hmm.. det er stadig det samme med Pause/Play.
Men nu vil den ingen OUTPUT skrive overhovedet !!?
Avatar billede barklund Nybegynder
18. februar 2003 - 21:15 #62
Det virker ikke? Jeg har bevist fjernet alle traces, da jeg troede, at alt var løst...hmm...

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        this.songPlayer.nextSong(true);
    }
    this.nextSong(autoplay);
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num,time) {
    trace("playing song "+num+" at "+time);
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play(time);
}
SongPlayer.prototype.play = function() {
    trace("playing song");
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function(go_on) {
    trace("running next song");
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
    if (go_on)
        this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position/1000;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    trace("resuming at "+this.position);
    this.paused = false;
    this.playSong(this.currentSong, this.position);
}
SongPlayer.prototype.isPaused = function() {
    trace("a call to isPaused returning "+this.paused);
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
Avatar billede theselfimages Nybegynder
18. februar 2003 - 21:20 #63
Jeg får dette:
Men den starter altså stadig nummeret fra start igen ved Pause/Play

running next song
playing song
playing song 4 at 0

a call to isPaused returning true
resuming at 32.261
playing song 4 at 32.261
Avatar billede barklund Nybegynder
18. februar 2003 - 21:28 #64
jeg kigger på det i morgen tidlig, når jeg kan teste det samtidig (sidder uden flash her...)
Avatar billede barklund Nybegynder
18. februar 2003 - 21:38 #65
åh... Nu har jeg en ide... Hvis nu man ikke reloader mp3 når man resumer:

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        this.songPlayer.nextSong(true);
    }
    this.nextSong(autoplay);
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.playSong = function(num) {
    this.sound.loadSound(this.path+num+".mp3", true);
    this.sound.play();
}
SongPlayer.prototype.play = function() {
    trace("playing song");
    this.playSong(this.currentSong,0);
}
SongPlayer.prototype.nextSong = function(go_on) {
    trace("running next song");
    if (!this.unused.length)
        this.initList();
    this.currentSong = this.unused.pop();
    if (go_on)
        this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position/1000;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    trace("resuming at "+this.position);
    this.paused = false;
    this.sound.play(this.position);
}
SongPlayer.prototype.isPaused = function() {
    trace("a call to isPaused returning "+this.paused);
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
Avatar billede barklund Nybegynder
18. februar 2003 - 21:41 #66
Faktisk er dette bedre:

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        this.songPlayer.nextSong(true);
    }
    this.nextSong(autoplay);
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.play = function() {
    trace("playing song from start");
    this.sound.play();
}
SongPlayer.prototype.nextSong = function(go_on) {
    trace("loading next song");
    if (!this.unused.length)
        this.initList();
    this.sound.loadSound(this.path+this.unused.pop()+".mp3", true);
    if (go_on)
        this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position/1000;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    trace("resuming at "+this.position);
    this.paused = false;
    this.sound.play(this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
Avatar billede theselfimages Nybegynder
18. februar 2003 - 21:47 #67
Ingen af de sidste 2 forsøg virker. Nu starter nummeret overhovedet IKKE efter Pause.
Avatar billede barklund Nybegynder
19. februar 2003 - 10:30 #68
Jeg har fundet en lille fejl i min generelle kode. Det hedder jo ikke sound.play() med derimod sound.start()...

Det fik mig til at lave et lille eksperiment:

lyd = new Sound();
lyd.loadSound("http://www.theselfimages.dk/images/music/3.mp3", true);
lyd.start(10);

Den burde loade lyden og starte efter 10 sekunder - men det gør den ikke!

Når man loader en streaming lyd, så begynder den helt automatisk at spille lyden fra starten. Stopper man lyden, så er den helt væk, og man kan ikke fortsætte den uden at loade den forfra...

Og man kan slet ikke bestemme, hvornår den skal starte med at spille - altså hvilken position...

Så du kan ikke lave det, som du vil - med mindre det er i orden, at brugerne først skal downloade lyden 100% før de kan afspille den!
Avatar billede theselfimages Nybegynder
19. februar 2003 - 11:41 #69
Men det er jo ikke rigtigt.
Der er jo et glimrende eksempel her:
http://www.flashkit.com/tutorials/Audio/Flash_MX-Kenny_Be-824/more18.php
på hvordan en streamet MP3 kan pauses og fint fortsætte når Play klikkes.

Iøvrigt virker Pause/Play funktionen også i det Paask har lavet. Den kan bare ikke holde styr på hvilket nummer der skal Pauses, når man når forbi det første afspillede nummer.
Avatar billede theselfimages Nybegynder
19. februar 2003 - 11:49 #70
Læs også dette:

The syntax for dynamically loading a sound object with an instance name of "myMusic" is as follows:

myMusic.loadSound("url",  isStreaming)Commonly, the sound object method, "loadSound", is used as follows:

myMusic.loadSound("sample.mp3", true)
In the above example, the MP3 file, sample.mp3, is loaded from the same folder that contains the SWF file. It loads into the sound object "myMusic", and it is loading as a streaming sound object. Concerning loading as streaming or as an event, loading as an event is the default. If neither true or false is specified for streaming, the sound object will load as an event.
Avatar billede barklund Nybegynder
19. februar 2003 - 15:37 #71
Som jeg kan se i det oprindelige indlæg er det vist et spørgsmål om player-version, så jeg prøver lige at hente den seneste og derefter tjekke igen...

De har nok lavet en player-release, hvor man kunne stoppe en loadSound uden at den blev "glemt", men hvor den blot loadede videre på filen, så man kunne afspille den igen ved en bestemt position...
Avatar billede barklund Nybegynder
19. februar 2003 - 15:37 #72
Din sidste kommentar er jo blot specifikationen på loadSound, og den ved jeg godt, hvordan fungerer... :o)
Avatar billede barklund Nybegynder
19. februar 2003 - 15:40 #73
Der står jo lige netop her http://www.flashkit.com/tutorials/Audio/Flash_MX-Kenny_Be-824/more18.php, at man skal have flash-player version nyere en flash6r40... Så det er derfor jeg ikke kan få det til at virke :o)
Avatar billede theselfimages Nybegynder
19. februar 2003 - 15:44 #74
Men jeg har jo selv den nyeste Player version. Og link eksemplet til Flashkit.com viser jo at det kan lade sig gøre.
Avatar billede barklund Nybegynder
19. februar 2003 - 15:52 #75
Men den bruger din flash ikke! Derfor vil det kun kunne virke, når du tester i en browser og aldrig internt fra flash.

Følgende script har jeg lige lavet og testet fra en browser - DET VIRKER :o)

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        this.songPlayer.nextSong(true);
    }
    this.nextSong(autoplay);
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.play = function() {
    this.sound.start();
}
SongPlayer.prototype.nextSong = function(go_on) {
    if (!this.unused.length)
        this.initList();
    this.sound.loadSound(this.path+this.unused.pop()+".mp3", true);
    if (go_on)
        this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position/1000;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.paused = false;
    this.sound.start(this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
Avatar billede theselfimages Nybegynder
19. februar 2003 - 15:53 #76
Ok! håber du kan lave nogle tests da. Som sagt virker Pause/Play funktionen slet ikke på de seneste 2 versioner af scriptet du har posted.
Avatar billede barklund Nybegynder
19. februar 2003 - 15:56 #77
Det allersidste gør! Men KUN fra browser - ikke fra flash...
Avatar billede barklund Nybegynder
19. februar 2003 - 15:58 #78
Men jeg vil lave en mental note (som jeg vil gøre digital når jeg får tilpas meget af actionscript.dk til at virke) om denne feature, der først virker fra flash-version flash6r40 (som er kendt som airwolf-versionen, da man også her kunne læse id3-tags i mp3-filer :o)
Avatar billede theselfimages Nybegynder
19. februar 2003 - 16:01 #79
Okay.. cool! Jeg viste faktisk ikke at du have denne portal.

Nu ser det ud til at virke perfekt!
Laver lige nogle tests.. og vender tilbage..

Måske kan vi endda få afsluttet dette i dag :)
Avatar billede theselfimages Nybegynder
19. februar 2003 - 17:35 #80
Nu har jeg testet og testet dit script fra mit eget site
http://www.theselfimages.dk/frame.asp?category=3&page=73&language=dk&pagehistory=64;0,68;3&pageLevel=3

OG! Problemet er nøjagtigt det samme som fik mig til at poste dette indlæg:
http://www.eksperten.dk/spm/311685

Jeg har lukket spørgsmålet da jeg gik ud fra at dette problem var løst med dette nyskrevne script. Jeg er villig til at åbne spørgsmålet igen, da du jo reelt har løst dette "Hjælp til streamer actionscript" spørgsmål.

Vil du kigge på det anden problem?
Avatar billede barklund Nybegynder
19. februar 2003 - 17:50 #81
kigger på det senere...

problemet burde ikke opstå, gør det, så må det være en fejl i playeren... For der bliver kun loadet et nyt nummer, når en sang er slut... Det er så dette nyligt loadede som den afspiller og den kan ikke "komme til" at afspille et tidligere nummer, da den jo har "unloaded" det gamle...
Avatar billede theselfimages Nybegynder
19. februar 2003 - 18:06 #82
Nu har jeg lige testet ingen her:
http://www.theselfimages.dk/frame.asp?category=2&page=3&pageLevel=0&language=dk

Jeg laver det første nummer der starter automatisk spille ud. Når det næste nummer starter i forlængelse af det første, PAUSER jeg det. Klikker jeg herefter Play, starten den for det meste et helt NYT nummer eller det aktuelle nummer fra starten. Nøjagtig dette samme der skete med Paask's gamle Player.

Meget mystisk!
Avatar billede theselfimages Nybegynder
19. februar 2003 - 18:07 #83
Undskyld slåfjel... håber du forstår meningen.
Avatar billede barklund Nybegynder
21. februar 2003 - 14:40 #84
Jeg kan godt gøre det, men jeg kan ikke fortælle dig hvorfor.

Som jeg skrev tidligere, så aner scriptet ikke, hvilken fil den afspillede før, så det er ikke scriptet, der "kommer til" at genspille den forrige. Det er en fejl i playeren simpelthen... Jeg skal prøve at høre rundt omkring, om dette er et kendt problem, men umiddelbart har jeg ingen ide om en løsning...

/Barklund
Avatar billede barklund Nybegynder
21. februar 2003 - 14:43 #85
Men det kan selvfølgelig løses med et lille hack, når jeg tænker over det... Man kan jo bare lave et helt nyt Sound()-objekt, når sangen er slut:

SongPlayer = function(path,number,autoplay) {
    this.path = path;
    this.number = number;
    this.nextSong(autoplay);
}
SongPlayer.prototype.initList = function() {
    this.unused = new Array();
    var i;
    for (i = 1; i <= this.number; i++)
        this.unused.push(i);
    this.unused.sort(function(a,b){ return random(3)-1; });
}
SongPlayer.prototype.play = function() {
    this.sound.start();
}
SongPlayer.prototype.nextSong = function(go_on) {
    delete this.sound.songPlayer;
    delete this.sound;

    this.sound = new Sound(_root);
    this.sound.songPlayer = this;
    this.sound.onSoundComplete = function() {
        this.songPlayer.nextSong(true);
    }
    if (!this.unused.length)
        this.initList();
    this.sound.loadSound(this.path+this.unused.pop()+".mp3", true);
    if (go_on)
        this.play();
}
SongPlayer.prototype.stop = function() {
    this.sound.stop();
}
SongPlayer.prototype.pause = function() {
    this.paused = true;
    this.position = this.sound.position/1000;
    this.sound.stop();
}
SongPlayer.prototype.resume = function() {
    this.paused = false;
    this.sound.start(this.position);
}
SongPlayer.prototype.isPaused = function() {
    return this.paused;
}
mySongPlayer = new SongPlayer("http://www.theselfimages.dk/images/music/", 9, true);
Avatar billede barklund Nybegynder
23. februar 2003 - 02:52 #86
Ingen kommentarer?
Avatar billede theselfimages Nybegynder
23. februar 2003 - 17:36 #87
Jaaaaaaaaaaaah!

Se! ... nu virker det. Helt perfekt med random afspilningen af de 9 munre + at den KUN spiller hvert nummer ÉN gang for hver runde.
Det ser nu også ud til at virke helt PERFEKT med Pause/Play funktionen.

Så en kæmpe TAK! for din enorme indsats og viljestyrke til at løse dette.. snart meget langvarige projekt.
Avatar billede theselfimages Nybegynder
23. februar 2003 - 17:38 #88
Post venligst et svar!

Din indsats har udløst en lille bonus.
(Må jeg ha' lov at kontakte dig, hvis jeg skulle updage bugs i playeren på et senere tidspunkt?)
Avatar billede barklund Nybegynder
25. februar 2003 - 11:54 #89
Jotak...

Og har du yderligere kommentarer til dette, så kan du bare poste dem herinde - jeg får jo en mail, hvis der kommer noget :o)

/Barklund

PS: Denne SongPlayer-klasse vil nok være at finde på min side www.actionscript.dk, når Arkivet kommer op og stå - for den er faktisk ret cool :o)
Avatar billede theselfimages Nybegynder
25. februar 2003 - 15:30 #90
Yep! den er supercool! Jeg vil holde øje med www.actionscript.dk

Mvh.
Lars
Avatar billede theselfimages Nybegynder
17. juli 2003 - 02:48 #91
Har du noget bud på dette lille problem i forlængelse af ovenstående?

http://www.eksperten.dk/spm/376725
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester