المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : درس إيقاف و تشغيل الصوت بزر واحد من نقطة التوقف بالأكشن



FLASHEN
05-08-2006, 06:38 PM
بسم الله الرحمن الرحيم

السلام عليكم

مثل ما يقولون الكتاب واضح من عنوانه :33:


أولا :
لكي نستطيع التحكم في الصوت عن طريق الأكشن يجب فتح المكتبة بالضغط على F11

ثم الضغط بالزر الأيمن على الصوت و اختيار Linkage

ثم في النافذة التي ستظهر نفعل الخيار Export for action script و export in first frame

و نسمي الصوت في خانة الإسم بأي إسم من إختيارنا و ليكن مثلا al

وهذا لكي نستطيع مناداته من لوح الأكشن بإسمه المختار هذا .

- نحدد الفريم الأول في الشريط الزمني لساحة العمل الرئيسية ونكتب هذا الكود :


رمز:


mysound = new Sound();mysound.attachSound("al");mybutton._alpha = 99;mybutton.onRelease = function() { myposition = mysound.position; mysound.onSoundComplete = function() { this.start(); }; if(mybutton._alpha < 100) { mysound.start(myposition/1000); mybutton._alpha = 100; }else if(mybutton._alpha == 100) { mysound.stop(); mybutton._alpha = 99; }}


شرح الكود:

دور خاصية ال alpha للزر واضح في الكود و هو للتحكم بالصوت عن طريق زر واحد
و هناك درس آخر استعملنا فيه هذه الخاصية و هو درس تشغيل و إيقاف الحركة عن طريق زر واحد .. بطبيعة الحال توجد عدة طرق للتشغيل و الإيقاف بنفس الزر و لكننا اخترنا و احدة منها و التي هي خاصية الألفا و التي هي أبسطها على الإطلاق ..

نأتي الآن لصلب موضوع درسنا هذا :


رمز:


mybutton.onRelease = function() { myposition = mysound.position; mysound.onSoundComplete = function() { this.start(); }; if(mybutton._alpha < 100) { mysound.start(myposition/1000);


myposition متغير يحمل كمعلومة داخله النقطة التي يوجد عندها الصوت
حيث position هي خاصية من خصائص عنصر الصوت و تحسب بالميلي ثانية ..
في السطر الذي بعدها حددنا للفلاش أنه عند انتهاء الصوت عليه أن يبدأ من نقطة الإنطلاق
أي من الصفر ..
نأتي للخاصية start :
هذه الخاصية في شكلها العام تكتب كما يلي :

رمز:


mySound.start(secondOffset, loop)


حيث secondOffset تمثل الثانية التي سيبدأ عندها الصوت
و loop تمثل عدد تكرار قراءة الصوت ..
.. فمثلا لو عندنا صوت فيه دقيقة
و وضعنا

رمز:


mySound.start(30, 10)


فإن هذا الصوت سيبدأ القراءة من نصف الدقيقة أي عند الثانية 30 و سيتكرر 10 مرات ثم يتوقف .. ( طبعا تستطيع لكي يتكرر الصوت مرات كثيرة أن تضع مثلا 999999 بدل 10 .
طبعا هاتان الخاصيتان اختياريتان ..

في الكود وضعنا :

رمز:


mysound.start(myposition/1000)


و بما أن 1 ثانية = 1000 ميلي ثانية

فإننا قسمنا myposition ( التي تحسب بالميلي ثانية كما أسلفت) على 1000 و هذا حتى نحصل على secondOffset الذي نرغب في تحديده ( لأنه كما قلنا يحسب بالثانية ) ..
لم نضع loop للصوت لأننا وضعناه بطريقة أخرى سيتكرر بها الصوت إلى ما لا نهاية كالتالي :


رمز:


mysound.onSoundComplete = function() { this.start(); };


هذا الكود مهم جدا لأن بدونه فإن الصوت عندما ينتهي لن يتكرر و إذا عملنا له loop كما تقدم في الشرح فإنه سيتكرر من آخر نقطة قمنا بتوقيفه عندها (طبعا فيه طرق أخرى كثير لتجاوز هذا الإشكال كالجمل الشرطية مثلا ) ..




يبقى الكود

رمز:


mysound.stop();





و هو واضح و لا يحتاج لشرح




أرجو أن تكون الفكرة و الشرح في متناول الجميع :bigok:





و السلام عليكم

منواش
16-10-2006, 04:40 AM
شكرا على الدرس

ويعطيك ألف عافية