Avatar billede martin_dalgaard Nybegynder
13. april 2005 - 22:05 Der er 12 kommentarer og
1 løsning

load mappe

Hej eksperter.

Jeg er igang med at lave en mp3 afspiller, den fungere entelig fint med at loade mp3'er og afspille dem , men jeg vil gerne have at den bare henter alle mp3'erne i en mappe, hvordan gør jeg det.

Håber i kan hjælpe mig.

MARTIN DALGAARD
Avatar billede barklund Nybegynder
13. april 2005 - 22:22 #1
Det kan flash ikke gøre alene. Du skal bruge noget serverside script til dette, for eksempel PHP eller ASP.
Avatar billede jakob-e Nybegynder
14. april 2005 - 01:28 #2
Hej Martin

Hvis du har adgang til Asp på din server kan du finde filindholdet af en mappe
ved hjælp af dette script:


<%@ LANGUAGE=VBScript %>
<% OPTION EXPLICIT %>
<%
' Gem dette script som getFolderFiles.asp uden at tilføje tags ell.
' Ret "mp3Folder" til det foldernavn du har dine filer i
' Stien er Relativ til der hvor du lægger Asp siden
' Siden danner en tekststreng som kan indlæses i flash
' myPlayList=mp3Folder/sang1.mp3¤mp3Folder/sang2.mp3......

Dim objFSO, objFolder, objItem, strPath, strPrint 
strPath  = "mp3Folder"
strPrint = "myPlayList="
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
For Each objItem In objFolder.Files
  strPrint = strPrint & strPath & "/" & objItem.Name & "¤"
Next
Set objItem = Nothing
Set objFolder = Nothing
Set objFSO = Nothing
%>
<%= Left(strPrint,Len(strPrint)-1)  %>



I flash tilføjer du dette script, der indlæser strengen fra getFolderFiles.asp:


// Opretter array til at holde sti og filnavne
var arrPlayList = new Array();
// Opretter loader objekt
loadPlaylist = new LoadVars();

// Efter indlæsning
loadPlaylist.onLoad = function(success) {
  // Hvis indlæsningen går godt
  if (success) {
    // Opdel strengen ved hver ¤ og gem værdierne i
    // arrPlayList
    arrPlayList = loadPlaylist.myPlayList.split("¤");
    trace("Playlist loaded!");
  } else {
    trace("Error loading playlist!");
  }
};
// Hent data fra getFolderFiles.asp
loadPlaylist.load("http://www.ditdomæne.dk/getFolderFiles.asp");



Jeg ved ikke hvordan du har lavet din afspiller, men nu har du ihvertfald dine filnavne indlæst... Dem må du så selv ligge og rode med ;)


Håber det gav mening,
Jakob E
Avatar billede martin_dalgaard Nybegynder
14. april 2005 - 13:32 #3
Tusinde tak :), men et spørgsmål, hvilke instance har de forskellige sange.
Og jakob skriv et svar så jeg kan give dig point.
Avatar billede martin_dalgaard Nybegynder
14. april 2005 - 17:03 #4
altså med andre ord hvad skal jeg skrive for at sætte musikken igang.
Avatar billede jakob-e Nybegynder
14. april 2005 - 17:24 #5
Hej Martin

Resultatet af anstrenelserne er som sagt et array
indeholdende navnene på dine mp3'er eks.

arrMyPlayList[0] = "mp3Folder/jodlebirge.mp3"
arrMyPlayList[1] = "mp3Folder/h_lotti.mp3"
arrMyPlayList[2] = "mp3Folder/kelis.mp3"

Når du har disse kan du benytte dem til at loade sangene ind i
din player. Bruger du, som jeg, MediaDisplay komponenten i MX2004+
(tror jeg) kan det i en simpel version se sådan ud:

1) Træk komponenten ind på scenen og giv den instance name
  "objMedia" eller hvad du vil

2) Indlæs den ønskede sang (her sang 2) i MediaDisplay ved
 
  objMedia.setMedia(arrPlayList[1],"MP3")

  Ved setMedia afspilles sangen automatisk når den er hentet.
  Men du kan kontrollere din afspilning med f.eks.
  objMedia.play(), objMedia.pause() eller objMedia.stop()
 
  Du kan også lade afspilningen afhænge af events så som
  et tryk på en knap 

  myButton.onRelease = function(){
    objMedia.setMedia(arrPlayList[1],"MP3")
  }

Der er rigtig mange muligheder, så det jeg har beskrevet er
bare for at give et indtryk....

Og tak for remindern om kommentar og svar. Det var min første
post på eksperten.dk (bruger normalt www.experts-exchange.com)

Jakob E
Avatar billede martin_dalgaard Nybegynder
17. april 2005 - 15:52 #6
desværre jakob det virker ikke, den vil simpelthen ikke afspille arrPlayList[1]
Avatar billede martin_dalgaard Nybegynder
17. april 2005 - 16:05 #7
jo det virker squ TUSINDE TAK JAKOB....... du styre..
Avatar billede martin_dalgaard Nybegynder
17. april 2005 - 16:42 #8
men nu hvor du er så sej.. kan du så ikke lige sige hvordan man sætte sange i kø på den der media display
Avatar billede jakob-e Nybegynder
17. april 2005 - 20:55 #9
Jo
Avatar billede martin_dalgaard Nybegynder
17. april 2005 - 20:59 #10
godt :) sig frem
Avatar billede jakob-e Nybegynder
17. april 2005 - 21:33 #11
Ok det var måske lidt let sluppet 
så jeg prøver at give et eksempel :)

//Udgangspunktet er det array vi loadede før
arrMyPlayList[0] = "mp3Folder/jodlebirge.mp3"
arrMyPlayList[1] = "mp3Folder/h_lotti.mp3"
arrMyPlayList[2] = "mp3Folder/kelis.mp3"

// Opret array til at holde index på de ønskede numre
// Hvis vi vil høre kelis, h_lotti og kelis igen ville arrayet se sådan ud
//  arrPlaying[0] = 2
//  arrPlaying[1] = 1
//  arrPlaying[3] = 2
//
// Du skal lave en funktion der tilføjer værdier til arrPlaying, men det er
// lidt afhængigt af hvordan du vælger dine numre... Så prøv dig lidt frem
// og sig til hvis det går i fisk
//
arrPlaying = new Array()

// Variabel der holder styr på hvilken af de ønskede
// sange der skal afspilles næste gang
intCurrentSong

// Funktion til at sætte afspilning af nyt nummer
function playMedia(){
  // For god ordens skyld stopper vi afspilningen mens vi arbejder
  objMedia.stop()

  // Fra arrPlayList (den vi loadede) beder vi om at få afspillet
  // det næste nummer (intCurrentSong) på listen arrPlaying 
  objMedia.setMedia(arrPlayList[arrPlaying[intCurrentSong]],"MP3")

  // Opskriv intCurrentSong, så vi er klar til næste gang
  intCurrentSong++

  // Opret eventListener... jeg skal nok komme til det
  objMedia.addEventListener("complete", endListener);

  // Spil nummeret
  objMedia.play()
}

// Opret EventListener* objekt
// * Et objekt der holder øje med om en given hændelse indtræffer
//  (f.eks. afslutningen på en afspilning)
var endListener = new Object();

// Vi beder vores objekt holde øje med netop afslutningen
endListener.complete = function(eventObject) {

  // Hvis der er flere uafspillede numre kalder vi funktionen playMedia
  if(intCurrentSong<arrPlaying.length){ playMedia() }
  // Ellers så stopper vi
  } else { trace("stopped") }
};
Avatar billede jakob-e Nybegynder
17. april 2005 - 21:53 #12
Hov jeg var vist lidt for hurtig...

1) Der er en syntax fejl i sidste else statment
  "}" skal slettes foran  else { trace("stopped") }

2) Og måske hjælper det hvis jeg siger, at du starter afspilningen
  ved at kalde  playMedia() og have sat intCurrentSong = 0,
  (hvis det er først valgte sang der skal spilles)

Sorry
Avatar billede martin_dalgaard Nybegynder
18. april 2005 - 16:50 #13
ok ja det virker jo fint, men en sidste ting, med denne her afspiller så skal sangene jo ligge på nettet. Det er jo lidt irreterende for de fylder jo.

Så jeg har prøvet at skrive "C:\Documents and Settings\Martin Dalgaard\Skrivebord\mp3player\sangene"  det er der sangene ligger på min pc, men det virker jo ikke, nogle råd.
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