بسم الله الرحمن الرحيم
السلام عليكم
مثل ما يقولون الكتاب واضح من عنوانه
أولا :
لكي نستطيع التحكم في الصوت عن طريق الأكشن يجب فتح المكتبة بالضغط على 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 كما تقدم في الشرح فإنه سيتكرر من آخر نقطة قمنا بتوقيفه عندها (طبعا فيه طرق أخرى كثير لتجاوز هذا الإشكال كالجمل الشرطية مثلا ) ..
يبقى الكود
رمز:
و هو واضح و لا يحتاج لشرح
أرجو أن تكون الفكرة و الشرح في متناول الجميع
و السلام عليكم