Avatar billede mite Nybegynder
05. december 2002 - 18:05 Der er 10 kommentarer og
1 løsning

Billede som bevæger sig på baggrund af en mp3-fil´s længde

Kan man godt få et billede til at bevæge sig vandret til højre som viser hvor langt mp3/wfm-filen er kommet i musikstykket og hvordan gøres dette?

Håber det er til at forstå.
Avatar billede joern Nybegynder
05. december 2002 - 18:18 #1
Hej.

Med kommandoen FileLen(filename) kan du få længden i bytes.
Positionen af en picturebox kan ændres i runtime med PictureBox.Left = ....
Med en Timer kan du få noget til at ske hver gang der er gået et antal millisekunder.

Timeren skal flytte billedet 100 % uanset MP3-filens længde, så du må udregne hvor mange Twips det skal flytte sig pr. sekund eller hvor små bevægelserne nu skal være.
Bruger du en indlejeret MCI32.OCX ? så kan den fortælle dig filens afspilningstid.  Nu er det så bare at regne.

M.v.h.  Jørn
Avatar billede mite Nybegynder
05. december 2002 - 19:09 #2
Hvordan bruges det i praksis.
Kan du evt. vise noget kode så jeg har lidt at starte på?
Avatar billede joern Nybegynder
05. december 2002 - 19:17 #3
Hej.

I så fald må du først svare på hvad du bruger for at afspille MP3-filen?
Er du måske slet ikke begyndt?

M.v.h.  Jørn
Avatar billede mite Nybegynder
05. december 2002 - 19:30 #4
Jeg bruger MediaPlayer til at afspille både mp3 og wma filer.
Jeg er skam færdig med min jukebox, men nu kunne det være sjovt med en lille julemand som bevæger sig mod højre.
Jeg bruger i forvejen slider som jeg ligeledes kan spole i.
Avatar billede joern Nybegynder
05. december 2002 - 19:48 #5
Hej.

Jeg har lavet et lille projekt, som du kan hente på
http://www.jkfsoft.dk/pakker/movepic.zip (12 kB)  Koden vises nedenfor, måske kan det inspirere dig.  Noget har jeg plukket fra mit melodikartotek.


Dim p, a As Integer, minsek As Long
Private Sub Command1_Click()
mp1.filename = ""
mp1.ShowPositionControls = False
mp1.Height = 675
mp1.Width = 3195
labmp3len.Caption = "0:00"


    mp1.filename = "e:\mp3_cd\coco.mp3"
    minsek = FileLen("e:\mp3_cd\coco.mp3") / 16100
         
    a = 2700 / minsek      'den strækning billedet flytter sig
   
   
    If minsek - (Int(minsek / 60) * 60) < 10 Then
        labmp3len.Caption = Int(minsek / 60) & ":0" & minsek - (Int(minsek / 60) * 60)
      Else
        labmp3len.Caption = Int(minsek / 60) & ":" & minsek - (Int(minsek / 60) * 60)
    End If


End Sub

Private Sub MediaPlayer1_DVDNotify(ByVal EventCode As Long, ByVal EventParam1 As Long, ByVal EventParam2 As Long)

End Sub

Private Sub Form_Load()
  p = 300
End Sub

Private Sub Timer1_Timer()
  p = p + a
  If p < 3000 Then Picture1.Left = p
 
  Label1.Caption = mp1.CurrentPosition
End Sub
Avatar billede mite Nybegynder
05. december 2002 - 19:49 #6
joern> tak skal du have...jeg kigger på det.
Avatar billede joern Nybegynder
05. december 2002 - 20:06 #7
Hej.

Jeg fik ikke dyrket 'Current.position'

Du kan vist blot:

minsek = FileLen("dinfil.mp3") / 16100

If mp1.CurrentPosition > 1 Then
  Picture.Left = 300 + (mp1.CurrentPosition / minsek) * 2700
End If

Billedet starter 300 twips fra venstre kant og slutter 3000 fra kanten.

M.v.h.  Jørn
Avatar billede mite Nybegynder
05. december 2002 - 20:26 #8
Den spørger efter object på denne linie: 
mp1.filename = ""

mangler dern noget?
Avatar billede joern Nybegynder
05. december 2002 - 20:57 #9
Jamen, altså.

mp1 er navnet på medieplayer og filename er den musikfil, du har valgt i din jukeboks.

I øvrigt fungerer det seneste ikke, men jeg har fået lavet kode, hvor billedet flytter med frem og tilbage, hvis man trækker i positions-markøren i mediaplayer.

Koden hører til i det lille projekt under timer, som jeg i øvrigt har sat til 500 millisekunders interval.

Private Sub Timer1_Timer()
If mp1.CurrentPosition > 1 Then
  p = 300 + (mp1.CurrentPosition / minsek) * 2700
End If
    If p < 3000 Then Picture1.Left = p
End Sub

M.v.h.  Jørn
Avatar billede guffas Nybegynder
03. januar 2003 - 12:02 #10
Prøv det her. (picture2 skal være contained i picture 1)
Private Sub Timer1_Timer()
    If mp1.Duration Then
    Picture2.Left = -Picture1.Width + (Picture1.Width * mp1.CurrentPosition / mp1.Duration)
    End If
End Sub
Avatar billede guffas Nybegynder
22. februar 2003 - 00:15 #11
hallo....
mite er du der ?
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
Kurser inden for grundlæggende programmering

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