|
You last visited: Today at 02:09
Advertisement
Per Slider Musikstelle ändern
Discussion on Per Slider Musikstelle ändern within the AutoIt forum part of the Coders Den category.
11/21/2011, 22:29
|
#1
|
elite*gold: 1
Join Date: Dec 2007
Posts: 645
Received Thanks: 92
|
Per Slider Musikstelle ändern
Hallo liebe Community,
ich habe mal wieder ein Problem:
Ich habe mir ein kleines GUI gebastelt mit dem ich .mp3 dateien abspielen kann.
Nun habe ich einen Slider eingebaut um den aktuellen Soundstatus abzufragen. Nur weis ich jetzt nicht so genau wie ich per Slider zur gewünschten stelle im Song switchen kann. Hier sind ein paar Auszüge:
Code:
Global $h_sound
Global $max_sec
$Slider2 = GUICtrlCreateSlider(0, 108, 300, 25)
GUICtrlSetData($Slider2,0)
Case $fileitem ;==> Open
$f_open = FileOpenDialog("Select Audio File", "D:\Musik\", "(*.mp3)")
If Not @error Then
_SoundClose($h_sound)
$h_sound = _SoundOpen($f_open)
$max_sec = _SoundLength($h_sound, 2) * 1000
_SoundPlay($h_sound)
WinSetTitle($Form1, "", GetFile($f_open))
AdlibRegister("ShowSeek", 250)
AdlibRegister("GetVol", 150)
AdlibRegister("Status", 0)
AdlibRegister("Setpos",0)
EndIf
Func Status()
$pos_sec = _SoundPos($h_sound, 2) * 1000
$set = $pos_sec / $max_sec * 100
GUICtrlSetData($Slider2, $set)
EndFunc
Func Setpos()
;~ $pos_sec = _SoundPos($h_sound, 2) * 1000
;~ $chooseset = $Slider2 /$max_sec * 100
$chooseset = GUICtrlRead ($Slider2)
;~ $set = $pos_sec / $max_sec * 100
_SoundSeek($h_sound,1,1,$chooseset)
EndFunc
Bei der Func Setpos() seht ihr schon einge versuche, jedoch springt der slider beim veränden immer zur ausgangslage und nichts passiert.
Lg
|
|
|
11/21/2011, 23:30
|
#2
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
hier mal ein einfach zu verstehender beispielcode der zeigt wie man es anstellen könnte:
Code:
#include <Sound.au3>
$sound = _SoundOpen("z:\Musik\Acapella\20 Fingers - Lick It.mp3")
_SoundPlay($sound, 0)
GUICreate('blubb', 300, 50)
$slider = GUICtrlCreateSlider(10, 10, 280, 20)
For $i=0 To 10
GUICtrlCreateLabel($i*10&'%', 15 + 25.5*$i, 30, 25)
Next
GUISetState()
While 1
$length = _SoundLength($sound,2)
Switch GUIGetMsg()
Case -3
_SoundClose($sound)
ExitLoop
Case $slider
$time = msFormat((GUICtrlRead($slider)/100)*$length)
_SoundSeek($sound, $time[0], $time[1], $time[2])
_Soundplay($sound)
Case Else
;GUICtrlSetData($slider, _SoundPos($sound,2)/$length*100)
EndSwitch
WEnd
Func msFormat($ms)
Local $tmp[3]
$tmp[0] = Int($ms/3600000)
$tmp[1] = Int(($ms-($tmp[0]*3600000))/60000)
$tmp[2] = Int(($ms-$tmp[0]*3600000-$tmp[1]*60000)/1000)
Return $tmp
EndFunc
habe mal das autoupdate der aktuellen position auskommentiert.
wenn man es einschaltet, bekommt man ein problem, da der slider während man ihn eig einstellen möchte immer an die aktuelle position wandert.
willst du einen slider nutzen zum wandern zu einer position, und zum darstellen der aktuellen position, musst du an der stelle wohl oder übel etwas tricksen.
die wohl einfachste möglichkeit die mir hier einfällt, wäre zu checken, was die maus gerade so treibt.
hier deinen weg zu finden überlasse ich ersteinmal dir.
solltest du probleme damit haben, kannst du dich ja nochmal melden =)
edit:
falls du zu faul zum selbst denken sein solltest, hier mal eine mögliche lösung des angesprochenen problems:
Code:
#include <Sound.au3>
Dim $update = True
$sound = _SoundOpen("z:\Musik\Acapella\20 Fingers - Lick It.mp3")
_SoundPlay($sound, 0)
GUICreate('blubb', 300, 50)
$slider = GUICtrlCreateSlider(10, 10, 280, 20)
For $i=0 To 10
GUICtrlCreateLabel($i*10&'%', 15 + 25.5*$i, 30, 25)
Next
GUISetState()
While 1
$length = _SoundLength($sound,2)
Switch GUIGetMsg()
Case -3
_SoundClose($sound)
ExitLoop
Case $slider
$time = msFormat((GUICtrlRead($slider)/100)*$length)
_SoundSeek($sound, $time[0], $time[1], $time[2])
_Soundplay($sound)
$update = True
Case Else
$state = GUIGetCursorInfo()
If IsArray($state) And $state[2] And $state[4]=$slider Then $update = False
If $update Then GUICtrlSetData($slider, _SoundPos($sound,2)/$length*100)
EndSwitch
WEnd
Func msFormat($ms)
Local $tmp[3]
$tmp[0] = Int($ms/3600000)
$tmp[1] = Int(($ms-($tmp[0]*3600000))/60000)
$tmp[2] = Int(($ms-$tmp[0]*3600000-$tmp[1]*60000)/1000)
Return $tmp
EndFunc
|
|
|
11/22/2011, 11:43
|
#3
|
elite*gold: 1
Join Date: Dec 2007
Posts: 645
Received Thanks: 92
|
Vielen dank, hat alles geklappt.
Thread kann geschlossen werden =)
Lg
|
|
|
|
Similar Threads
|
[JQuery, VB.net, Autoit] Der Iphone Slider
09/01/2011 - Coding Releases - 7 Replies
Joah nach n paar Tagen "basteln" präsentiere ich euch mal wieder nen neuen Release:
Der Iphone Slider umgesetzt in 3 Sprachen für mehr Kompatibilität!
Uhm jop... Viel erklären kann ich nicht aber ein paar Worte dazu:
Die VB.net Version läuft am stabilsten, der Slide-Sub kommt Ursprünglich von TheHackerZero, jedoch ist das ding nichmehr zurückgeslidet und der Sound hat genervt, also hab ich den Ton rausgeschmissen und ne Slide-Back Sub dazugeschrieben, also gibts auch bissel Credits an...
|
[Homepage] Images Slider
04/12/2011 - Flyff Private Server - 4 Replies
Willkommen auf meinem ersten richtigen Tut.
Hier wird genau erklärt wie ihr einen "Slider" in eurer Homepage einbaut.
Das ist eine Box wo Bidler gezeigt werden. (Je 10 Sekunden wechseln sie sich.)
Das gibt es auch in der Elitepvpers Startseite.
Viel spass!
1. Neue Javasript Datei namens "slider.js" erstellen
2. Js Datei öffnen und folgendes reinschreiben
$(".image_reel").css({'width' : imageReelWidth});
|
All times are GMT +2. The time now is 02:09.
|
|