คือ ผมจะทำ music player สักตัว เล่นเฉพาะไฟล์ audio(mp3,wma) ตอนนี้เพิ่งเริ่มต้น
ทำได้แค่ ปุ่ม play / pause เองครับ
แต่ไม่ว่า จะไปหาข้อมูลที่ไหน ๆ ก็ไม่มีที่เกี่ยวกับ seekbar เลย
ผมยังจับต้น ชนปลายไม่ถูกเลย ไม่รู้จะเริ่มต้นที่ตรงไหนอ่ะครับ
ใครทำเป็น ช่วยแนะนำด้วยนะครับ ขอบคุณล่วงหน้าครับ
จะรับตัวนี้ไปพิจารณาไหมครับ :42:
แนบมาแล้วนะครับ ลองโหลดไปแกะดู :12:
(แก้เพลงที่จะเล่นที่ไฟล์ text นะครับ)
:27: แหมๆ จานก่อ
ขอเบิ้ลหน่อยนะครับ จะได้อ่านง่ายๆ หน่อย :31: พี่แอนตัดหน้าพอดี ค่อยยังชั่ว..
ถ้าจะให้แนะนำว่าเริ่มตรงไหน ตรงนี้ครับ
- onPress
- คำนวณเปอร์เซ็นต์จากตำแหน่งที่เมาส์กำลังคลิกอยู่ที่ seekbar
- เอาไปเทียบกับความยาวเพลง
เช่น สมมติว่าคลิกที่ตรงกลางของ seekbar ก็จะคำนวณได้ 50 เปอร์เซ็นต์..
ก็เอา 50 เปอร์เซ็นต์ * ความยาวเพลง = ตำแหน่งตรงกลางเพลง
seekBar.onPress = function(){
var positionPercentage = this._xmouse/this._width;
sound.stop();
sound.start( sound.duration * positionPercentage / 1000 ); //หาร 1000 เพื่อแปลง milliseconds เป็น seconds ครับ
}คร่าวๆ ก็ประมาณนี้ครับ
อ้างคำพูดจาก: ☼ อภิมหาแอน ☼ เมื่อ 17 พ.ค. 2009, 19:13 น.
:27: แหมๆ จานก่อ
:31: อะไรพี่.. ไฟล์เก่าแก่อะครับ เขียนไว้ 2-3 ปีแล่ว
ขอโหลดไปศึกษาดูก่อนนะครับ :56: :45:
กำ - -" แฟลชไม่ขึ้นซะงั้น
/* ลืมบอกไป ผมโพล่มาเล่นแฟลช ก็ as3 เลยครับ
as2 งง มากมาย -.-
อ๋อ งั้นยิ่งง่ายครับ เพราะช่วงนี้ผมก็จับแต่ 3 ไม่ได้เล่น 2 เลย :30:
งั้นเอาตัวอย่าง 3 ไปดูนะครับ
http://files.korstudioxd.com/musicplayer_v2.52.rar (http://files.korstudioxd.com/musicplayer_v2.52.rar)
เสร็จแล้วให้ดูในโฟลเดอร์ lib\FLAMP.as
แล้วหาฟังก์ชั่นชื่อ SelectTime ครับ หน้าตาแบบนี้
public function SelectTime(time:Number):void {
if (PlayStatus > 0) {
target.sc.stop();
trace(target.s.length);
target.sc = target.s.play(time);
target.sc.soundTransform = s_transform;
target.sc.addEventListener(Event.SOUND_COMPLETE, target.onSoundCompleted);
if (PlayStatus == 2) {
Pause(target.sc);
}
}
}
แล้วก็มันจะมีการ addEventListener ให้กับตัว Seek bar ที่ไฟล์ lib\ButtonListeners.as ครับ
(ตอนนั้นผม OOP ห่วยแตกมาก)
หาดูฟังก์ชั่นนี้ครับ SK_doProgress
function SK_doProgress(e:MouseEvent) {
if (e.buttonDown) {
var position:Number = e.target.mouseX*_root.root.s.length/e.target.width;
_root.SelectTime(position); //_root เป็นตัวแปรที่ผมตั้งขึ้น เก็บที่อยู่ของ stage ไว้
}
}
ฟังก์ชั่นนี้จะเป็น listener ให้กับ seek bar ครับ เมื่อมีการกดลงไปที่ seek bar (รวมถึงกดค้างแล้วถูไป-มา)
มันก็จะตำแหน่งปัจจุบัน (position) ว่าเพลงควรเริ่มเล่นที่ตำแหน่งไหน
ก็คือ หาค่าเปอร์เซ็นต์ครับ สังเกตว่าจะมี e.target.mouseX/e.target.width ตัวนี้จะได้เป็นค่าทศนิยมระหว่าง 0 ถึง 1
มันคือค่าอัตราส่วนครับ
จากนั้นก็เอาไปคูณกับความยาวเพลง _root.root.s.length (ตัวแปร s อยู่ที่ root ของ stage) ก็จะได้
ตำแหน่งของเพลงที่ต้องเล่นในเวลาที่คลิกครับ
แล้วมันก็จะส่งค่าที่คำนวณได้ ไปที่ฟังก์ชั่น SelectTime เพื่อสั่งให้เสียงเล่นอีกที
ตามมาศึกษาด้วยคนครับ :53:
(รวมถึงกดค้างแล้วถูไป-มา) :04: คำอธิบายแบบนี้ ได้อารมณ์มากจานก่อ :30:
-.-
ขอบคุณมาก ๆ ครับ :04:
ว่าแต่..
โฟลเดอร์ lib มันหนีไปไหนแล้วอ่าครับ :08:
ผมหาไม่เจอ :09:
นั่นสิ ผมก็หาไม่เจอ :37:
:55: อ้าว ไม่อยู่ในนั้นเหรอครับ
เอ่อ ผมอัพใหม่ละครับ กดที่ลิงค์เดิมได้เลยครับ
:05: ขอโทษครับ แง
คือ ผมลอง debug ดูแล้ว มัน error ครับ
1087: Syntax error: extra characters found after end of program.
on (release) {
ปล. หรือผมต้องแก้ไขอะไรเพิ่มเติมก่อน..
ปล2. ผม debug ไฟล์ musicplayer_v2.52.fla เลยครับ
:55: เอ๊ะ มาได้ไงอะ อันนั้นมัน ActionScript 2 อะครับ ผมเปิดดูก็คอมไพล์ได้นะครับ ไม่เจอเลย
:05: อะไรกันนี่
แบบนี้อ่ะท่าน :32:
(http://upload.meemodel.com/UploadedFiles/153/t8yzz12428246731034395.JPG)
ลบบรรทัด on(release){ ไปเลยครับ
อยากลบอยู่เหมือนกันครับ
แต่ไม่รู้มันอยู่ตรงไหน กด go to source ก็ไม่ได้ -*-
ท่าจะบ้าแล้วว ว T^T
:08: นั่นสิครับ ผมเปิดดูก็ไม่เจออะไรเหมือนกัน..