Bản in của bài viết

Click vào đây để xem bài viết này ở định dạng ban đầu

zikzak_zozo

ĐIỀU CHỈNH SOUN THEO Ý MUỐN TRONG FLASH

my_sound=new Sound()
my_sound.attachSound("dotronghieu")//attach sound từ thư viện vào
my_sound.start()//cho sound start ngay
slider.onEnterFrame=function(){// khi enter vào frame
slider._x=(my_sound.position/my_sound.duration)*line._width//ta xác định cho tọa độ x của thanh slider thay đổi cùng với sound. Ở đây ta có sound.position là lượng âm thanh đã chạy được bao nhiêu đó, tính bằng milisecond, và sound.duration là độ dài của cả bài hát của mình, cũng được tính bằng ms. Duration của bài hát tương ứng với cả đoạn line. Ta sẽ suy ra công thức tính là: slider._x= position của sound * line._width/duration của sound
}
slider.onPress=function(){ // khi slider được nhấn
delete slider.onEnterFrame // ko cho slider chuyển động tiếp với âm thanh như đã qui định ở trên nữa
my_sound.stop()// đồng thời cũng stop sound đi
startDrag(this,true,0,0,line._width,0)// cho phép kéo slider, nhưng ko cho phép kéo lệch xuống dưới hay lên trên, chỉ theo chiều của line
}
slider.onRelease=function(){// khi nhấn chuột và thả ra
t=(slider._x/line._width)*my_sound.duration/1000 // t là lượng sound đã chạy, tính bằng s

my_sound.position=t*1000// ta tính được lượng sound đã chạy tính bằng ms
my_sound.start(t)// cho sound start ở vị trí t
stopDrag()// ngừng kéo
slider.onEnterFrame=function(){// do ở trên ta sử dụng stopDrag nên ơ chỗ này phải cho thanh slider tiếp tục chạy, nếu ko nó sẽ đứng yên
slider._x=(my_sound.position/my_sound.duration)*line._width
}
}
Ko biết cbt phân tích ở trên có đúng ko, tuy nhiên ở đoạn code này:

ActionScriptt=(slider._x/line._width)*my_sound.duration/1000;
my_sound.position=t*1000;
my_sound.start(t);
Ta có thể viết là:
ActionScriptmy_sound.position = slider._x*my_sound.duration/line._width;
my_sound.start=(my_sound.position*1000);
Tuy nhiên khi cho chạy thử thì cái slider biến mất
Ồ, tự dưng thấy bài của anh Playboy chạy ra, chắc là cbt và anh Playboy post cùng lúc
QUOTEmy_sound không phải là mc(movie clip) em à mà là Object của Sound Class
oh, mà em cũng chưa hiểu mấy cái sound class lắm. Lâu nay ko làm nhiều về sound. Phải tìm hiểu thêm mới được

Được chỉnh sửa bởi cobetuyet on Jul 1 2004, 07:49 PM


--------------------

Don't dream it, do it!




playboy Jul 2 2004, 01:46 AM Gửi vào: #14


non-ActionScriptor


Nhóm: Member
Bài viết: 963
Tham gia: 17-March 04

Warn: (0%)

cám ơn CBT đã giải thích hộ anh đoạn code, em phân tích khá đúng tuy nhiên còn có chỗ chưa chuẩn lắm
QUOTEt=(slider._x/line._width)*my_sound.duration/1000 // t là lượng sound đã chạy,

t không phải là lựơng sound đã chạy mà là chia tỉ lệ bài hát với vị trí của slider so với chiều dài của line
chỗ này anh khó giải thích quá hi vọng em đọc kĩ rồi hiểu
ActionScript
my_sound.position = slider._x*my_sound.duration/line._width;
my_sound.start=(my_sound.position*1000);
hàm my_sound.start() nhận tham số chứ không phải là dùng dấu bằng: my_sound.start(my_sound.position*1000)
tuy nhiên em dùng my_sound.position*1000 thì đựơc số lớn lắm cho nên cái slider chạy mất tiêu vì position ở đây là mili giây,em phải chia cho 1000 mới đúng
my_sound.position là số luôn tăng và chỉ phụ thuộc vào âm thanh chạy đến vị trí nào thôi
cho nên phép gán này là ko cần thiết :
my_sound.position = slider._x*my_sound.duration/line._width;trong bài viết của anh có một dòng bị thừa đó là dòng my_sound.position=t*1000,hôm qua làm vội quá nên anh chưa kiểm tra lại
Em mở Help của Flash ra đọc về Sound Class đi,khá hay đấy

Được chỉnh sửa bởi playboy on Jul 2 2004, 02:21 AM


--------------------

Tôi chỉ làm những gì tôi thích , bất cứ điều gì miễn là tôi thích




cobetuyet Jul 2 2004, 05:49 AM Gửi vào: #15


A new day has come


Nhóm: A-Scriptor
Bài viết: 878
Tham gia: 21-May 04

Warn: (0%)

ActionScriptcám ơn CBT đã giải thích hộ anh đoạn code, em phân tích khá đúng tuy nhiên còn có chỗ chưa chuẩn lắm
hì hì, có gì đâu nè, anh chẳng bảo em là đi dịch bài hộ cho anh rùi còn gì ( làm 1 chân phụ mod) . À mà anh nhớ trả lương cho em đó, em ko làm ko công đâu à

QUOTEQUOTE

t=(slider._x/line._width)*my_sound.duration/1000 // t là lượng sound đã chạy,



t không phải là lựơng sound đã chạy mà là chia tỉ lệ bài hát với vị trí của slider so với chiều dài của line
chỗ này anh khó giải thích quá hi vọng em đọc kĩ rồi hiểu

Em nghĩ là chỗ này em hiểu nhưng diễn đạt sai nên để em giải thích lại xem sao. Chỗ này anh tính t nhé, theo công thức ta sẽ có được tại điểm slider._x nào đó, thì số giây của bài hát ở đó ---> t là số s ở điểm đó. Điểm đầu tiên của thanh line là 0s, điểm cuối cùng sẽ là thời gian của bài hát. Theo công thức trên khi biết được tọa độ mới của slider._x ta sẽ tính được tại điểm đó đang là s thứ mấy. Em nói là đó là lượng sound đã chạy là ko chính xác, sorry, phải nói đó là , uhm, đó là... ta xác định được điểm là sound ở giây thứ mấy và cho sound chạy tiếp bắt đầu từ điểm đó.

ActionScriptCODE

my_sound.position = slider._x*my_sound.duration/line._width;
my_sound.start=(my_sound.position*1000);


hàm my_sound.start() nhận tham số chứ không phải là dùng dấu bằng: my_sound.start(my_sound.position*1000)
tuy nhiên em dùng my_sound.position*1000 thì đựơc số lớn lắm cho nên cái slider chạy mất tiêu vì position ở đây là mili giây,em phải chia cho 1000 mới đúng
hic hic, chỗ này vì gõ vội quá nên em nhầm, hơn nữa suy luận cũng nhầm luôn
Thank you

Được chỉnh sửa bởi cobetuyet on Jul 2 2004, 05:55 AM


--------------------

Don't dream it, do it!




cobetuyet Jul 2 2004, 07:30 AM Gửi vào: #16


A new day has come


Nhóm: A-Scriptor
Bài viết: 878
Tham gia: 21-May 04

Warn: (0%)

Tặng anh Playboy, EYA và mọi người bài hát này nè, cũng hay lắm, đố mọi người biết đó là bài gì đó hì hì . Không hiểu sao sau khi convert sang Mp3 chất lượng nó lại kém đi nhiều quá, thế này thì làm sao cạnh tranhđược với bài hát của anh playboy chứ hị hị


À, đoạn code về chỗ click_line cbt xin được sửa lại là, nếu như để mình MouseUp thì hic hic, ko dùng chung với các button kia được. Nó đánh nhau tung toé lên cả hic hic nên phải dùng thêm cái hitTest để xử lí:

ActionScriptline.onMouseUp=function() {
if (this.hitTest(_root._xmouse, _root._ymouse)) {
my_sound.stop();
slider._x= this._xmouse;
t=(slider._x/line._width)*my_sound.duration/1000;

my_sound.start(t);
}
}

Chúc mọi người vui vẻ

Được chỉnh sửa bởi cobetuyet on Jul 2 2004, 07:38 AM


--------------------

Don't dream it, do it!




emyeuanh Jul 2 2004, 09:57 AM Gửi vào: #17


Member


Nhóm: Member
Bài viết: 210
Tham gia: 8-June 04

Warn: (0%)

bài hát của chị CBT hay quá, em không biết tên bài hát là gì,đây mới là lần đầu tiên nghe mờ
chị có thể cho em file gốc của chị đựơc không,file của anh playboy chán quá ,trình bày chẳng đẹp và chuyên nghiệp gì cả,mỗi cái Slider xấu òm
sao nút Stop của bài hát của chị giống nút Pause vậy,em tưởng là khi nhấn Stop thì sound bị tắt đi và chạy về vị trí ban đầu chứ ,khi nháy Play lại tiếp tục chạy
đọc bài hướng dẫn của anh chị em hiểu ra được một chút nhưng cho em hỏi là em tìm mãi mà không thấy code trong file .fla ,em chỉ thấy mỗi cái thanh Slider thôi và em Export ra SWF rùi mà ko nghe đựơc nhạc gì cả
hic hic

Được chỉnh sửa bởi emyeuanh on Jul 2 2004, 10:19 AM




cobetuyet Jul 2 2004, 10:24 PM Gửi vào: #18


A new day has come


Nhóm: A-Scriptor
Bài viết: 878
Tham gia: 21-May 04

Warn: (0%)

QUOTEchị có thể cho em file gốc của chị đựơc không,file của anh playboy chán quá ,trình bày chẳng đẹp và chuyên nghiệp gì cả,mỗi cái Slider xấu òm
Trời trời, em nỡ nói vậy với anh playboy, anh í dỗi, anh í ko giúp em nữa đó ( có nói thì nói nhỏ vào tai chị nghe thôi nha cưng, hi hi )
Để chị post file fla lên cho em coi, nhưng sợ rằng ko khác của anh playboy là mấy vì chị lười quá nên sử dụng luôn file của anh ấy, có thay đổi tí chút về hình ảnh à.
Em ko tìm thấy đoạn code là bởi vì nó ko nằm ở layer 1, frame 1 mà trốn ở trong mc symbol 3. Em click 2 lần vào hình mấy cái slider với line, nó mở ra mc 3, sau đó em click vào cái layer của mc đó, mở action panel ra ta sẽ thấy đoạn code trốn trong đó


VnVista I-Shine
© http://vnvista.com