close
دانلود فیلم
آشنایی با فرمان FSCommand در فلش

در اكثر كاربردهای واقعی, شرایطی پیش می آید كه از طراح فلش خواسته می شود تا از درون فیلم فلش عملی را انجام دهد كه به صورت عادی خارج از حوزه امكانات و قابلیت های این نرم افزار است. به عنوان مثال فرض كنید كه شما به عنوان یك طراح فلش, یك نمایش مقدمه یا اصطلاحا Intro بسیار زیبا برای سایتی طراحی كرده اید. اگر كارفرما از شما بخواهد كه كلیدی برای Bookmark كردن سایت, در پروژه خود بگنجانید, تكلیف شما چیست؟ در بین مجموعه دستورات فلش به دنبال چنین دستوری می گردید؟ در چنین موردی و در بسیاری از موارد جدی تر, كافی است كه طراح فلش بتواند به روشی, از درون محیط فلش به امكانات مرورگر دسترسی بیابد. در این صورت به یكباره, دنیایی از امكانات جدید به مجموعه قابلیت های قبلی نرم افزار فلش افزوده خواهد شد .



از این مقدمه چینی می توانید به راحتی تشخیص دهید كه دستور FSCommand چنین امكانی را در اختیار كاربر فلش قرار می دهد. اگرچه این نتیجه گیری كاملا صحیح است, اما حقیقت آن است كه دامنه كاربردهای دستور FSCommand در فلش می تواند بسیار وسیع تر از این هم باشد .
در واقع دستور FSCommand در فلش, ابزاری است كه ارتباطات بین فیلم های فلش و محیط میزبان این فیلم ها را برقرار می كند. در اینجا منظور از محیط میزبان فیلم های فلش, بر حسب مورد می تواند محیط مرورگر و یا محیط نرم افزار Flash Player باشد. میزبان محیطی است كه فیلم های فلش در درون آن به نمایش در می آیند و یا اجرا می شوند. به عنوان مثال, در كاربردهای تحت وب , دستور FSCommand می تواند برای اجرا كردن كد جاوا اسكریپت به كار رود ( در ادامه همین نوشته خواهیم دید كه چگونه می توان در مسیر معكوس حركت كرد , یعنی به كمك جاوا اسكریپت, فیلم فلش را كنترل نمود)
در صورتی كه با كار تولید محصولات چند رسانه ای و ابزارهای آن مانند نرم افزار دایركتور آشنا باشید, احتمالا اهمیت قابلیت صدور فرمان از فیلم های فلش به محیط میزبانی همچون دایركتور و یا بر عكس را كاملا درك می كنید. در واقع می توان از دستور FSCommand برای برقراری ارتباط با زبان اسكریپت نویسی دایركتور یعنی Lingo به خوبی استفاده كرد .
بازگردیم به همان كاربردهای فراوان تر اینترنتی و وب. قبل از هر چیز باید به خاطر داشته باشیم كه همه مرورگرها از دستور FSCommand پشتیبانی نمی كنند و در صورتی كه در كاربرد واقعی قرار است كه سایت شما در چندین مرورگر به راحتی قابل مشاهده باشد, باید به این مسئله توجه كافی داشته باشید. طبیعی است كه انتظار داشته باشیم تمامی نسخه های جدیدتر مرورگر اینترنت اكسپلورر (نسخه 4 به بالا) از این دستور پشتیبانی كنند. مرورگر نت اسكیپ نسخه 6 هم با وجود آنكه تفاوت های اساسی با مرورگر IE دارد, از دستور FSCommand پشتیبانی می كند (مرورگر نت اسكیپ به جای استفاده از تكنولوژی اكتیو ایكس, به تكنولوژی دیگری مرسوم به Live Connect برای پشتیبانی از FSCommand و نظایر آن متكی است). كاربران مرورگر موزیلا هم می توانند با ارتقاء دادن Plugin های خود, از این قابلیت استفاده كنند. ( در مورد مرورگر پرسرو صدای firefox هنوز اطلاعی ندارم و نمی دانم كه چند و چون كاربرد FSCommand در محیط این مرورگر چگونه است)

ارتباط دو طرفه
تا اینجا درباره مفهوم دستور FSCommand صحبت كردیم, اما این دستور چگونه كار می كند؟ برای تشریح این موضوع, از كاربرد این دستور در برقراری ارتباط بین اكشن اسكریپت و جاوا اسكریپت و با لعكس استفاده خواهیم كرد.البته توجه داشته باشید برای این مورد خاص, یعنی اجرای اسكریپت های جاوا اسكریپت از درون محیط فلش, می توان از تابع دیگری به نام (getURL) در فلش استفاده كرد. اما كاربرد این تابع تنها محدود به ارتباط با جاوا اسكریپت است و به طور كلی نمی توان از آن برای ارتباط بین فلش و محیط میزبان بهره گرفت .
در محیط فلش, هر گاه تابع FSCommand اجرا شود, نرم افزار فلش سعی خواهد كرد تا پیامی به جاوا اسكریپت ارسال نماید. از طرف دیگر, هر گاه مرورگری, فرمان FSCommand را از نرم افزار فلش دریافت كند, بلا فاصله به جستجوی توابع جاوا اسكریپت (و یا VB script ) موجود می پردازد. در واقع اگر در محیط مرورگر (صفحه وب) قبلا توسط طراح فلش, تابع مناسبی تعبیه شده باشد (كه به آن تابع catcher می گویند), در این صورت مرورگر به محض دریافت فرمان FSCommand با آ رگومان های مشخص, در می یابد كه باید تابع catcher را اجرا كند. بدین ترتیب ارتباط یك طرفه بین محیط فلش و مرورگر با استفاده از این پروتكل قراردادی, برقرار می شود. به یاد داشته باشید كه تابع یا اصطلاحا دستور FSCommand دارای دو پارامتر است كه به اولی پارامتر Command و به دومی پارامتر Argument نام نهاده اند. محیط اجرا كننده دستور FSCommand, این دو پارامتر را به محیط میزبان كه در اینجا جاوا اسكریپت است, انتقال می دهد .
در قطعه كد 1, چنین فرایندی تشریح شده است. در این قطعه كد, دستور FSCommand, یك تابع جاوا اسكریپت alert را در محیط میزبان (مرورگر ) فراخوانی می كند (تابع alert در جاوا اسكریپت, معادل تابع messagebox در زبان های دیگر است). پارامترهای فراوان FSCommand در مثال یك, به ترتیب عبارتند از , و این حالت در دنیای واقعی, به شكل زیر به به كار برده می شود : FSCommand ("call-alert", "Hello World")
همان طور كه قبلا یادآور شدیم, پیاده سازی دستور FSCommand در مرورگرهای IE و Netscape با یكدیگر تفاوت دارند. در شكل یك, چگونگی انتقال دستور از فلش به جاوا اسكریپت در هر دو مرورگر نمایش داده شده است .
در این مرحله مناسب است كه بر اساس آنچه تا كنون بیان شد, یك تمرین عملی بسازیم. برای این كار می توانید مراحل زیر را به صورت گام به گام انجام دهید :

استفاده از دستور FSCommand در محیط فلش :
یك فایل جدید فلش ایجاد كنید و در فاصله چند ثانیه بعد از فریم آغازی, یك keyframe ایجاد كنید .
پنجره اكشن اسكریپت را برای keyframe ایجاد شده, باز كنید .
از منوی Actions در این پنجره, فرمان FSCommand را انتخاب نمایید. در این مرحله بخش پارامترهای این پنجره, شامل دو ورودی متنی خواهد بود. به طور معمول باید در جای پارامتر Command از نام تابع جاوا اسكریپت استفاده كنید .
در جعبه متن Command عبارت "callalert" را قرار دهید .
در جعبه متن arguments عبارت "Hell World" را وارد نمایید .

قرار دادن فیلم فلش در درون صفحه وب :
یك فایل HTML ایجاد كرده و از برچسب های object و embed برای جای دادن فیلم فلش در این صفحه وب, كمك بگیرید. برای این كار, اطمینان حاصل نمایید كه نام فیلم فلش خود را با استفاده از ID در عبارت object و Name در برچسب Embed  به درستی بیان كرده باشید. موفقیت اجرای دستور FS به طور كامل به نام گذاری یكسان فیلم فلش و اسامی ذكر شده در برچسب های صفحه وب, وابسته است. (اگر با مرورگر نت اسكیپ كار می كنید, فراموش نكنید كه سوییچ swLiveConnect="true" را به كار برید) پس از انجام این مراحل, صفحه HTML شما باید چیزی مشابه با قطعه كد شماره یك باشد .

اضافه كردن اسكریپت به صفحه وب :
در صورتی كه با مرورگر IE كار می كنید, می توانید از vbscript برای این منظور استفاده كنید. اگر از قطعه كد یك به یاد داشته باشید, می دانید كه مرورگر IE از قطعه كوچكی كد vbscript برای دریافت كردن دستور FSCommand و ارسال آن به جاوا اسكریپت, استفاده می كند. در این مرحله, این بخش از كار را انجام می دهیم. برای این منظور, می توانید قطعه كد 2 را در بخش Head صفحه وب قرار دهید. توجه داشته باشید كه عبارت testMovie را به نام فایل فلش خود تغییر دهید. یعنی همان نامی كه در برچسب های object و embed به كار برده اید .

اضافه كردن كد جاوا اسكریپت برای دریافت كردن دستور FSCommand
تا اینجا, فیلمی ساخته ایم و در درون صفحه وب قرار داده ایم كه فرمان FSCommand مشخصی را به محیط مرورگر ارسال می كند. حالا باید تابع جاوا اسكریپتی بنویسیم كه فرمان FS را دریافت یا اصطلاحا "catch" كند. برای این كار می توانید قطعه كد 3 را در بخش Head صفحه وب قرار دهید. تاكید می كنیم كه نام testMovie را به نام فیلم خود تغییر دهید .

شرح ماجرا
در قطعه كد 3, تابع testMovieDoFSCommand هر بار كه فیلم testmovie فرمان FS را ارسال كند, یك بار اجرا خواهد شد. كلید واژه DoFSCommand, كلید واژه ای است كه از طرف فلش برای مشخص كردن توابعی كه از طریق فرمان FSCommand فراخوانی می شوند, به كار می رود. پیشوند testmovie بیانگر فیلمی است كه فرمان FS را ارسال می كند. بدین ترتیب تابعی كه مثلا foomovieDoFSCommand نام داشته باشد, زمانی اجرا خواهد گردید كه فیلمی به نام foomovie فرمان FS را ارسال كند. موضوع دیگر, پارانترهای دوگانه command و args هستند. همان طور كه قبلا گفته شد, این دو پارامتر, مقادیری هستند كه به تابع مقصد ارسال یا انتقال داده می شوند .

چگونه جاوا اسكریپت با فلش صحبت می كند
در كاربردهای واقعی, مواردی را می توان یافت كه در آن ها نیاز به ارسال فرمان یا مقداری, از محیط میزبانی مانند مرورگر به فیلم فلش خواهیم داشت. به طور معمول, می توان با فراخوانی متد های ویژه ای از جاوا اسكریپت, فرمان هایی را به فلش ارسال كرد. فراخوانی متد های فلش, دقیقا همانند تمام فراخوانی های متد های درونی جاوا اسكریپت است, مثلا document.write() یا window.close() از نگاه یك برنامه نویس, چنین ارتباطی, روشی یك طرفه محسوب می شود. در این روش ها, متد های جاوا اسكریپت, یك فیلم فلش را كنترل می كنند و نیازی به هیچ ترفند ویژه ای در سمت مقابل (در فیلم فلش) ندارد .
در اینجا برای درك بهتر موضوع از یك مثال ساده برای كنترل كردن یك فیلم فلش توسط جاوا اسكریپت, استفاده می كنیم. برای ساختن چنین مثالی به ترتیب زیر عمل كنید :
فیلم فلش مورد نظر خود را در درون یك صفحه وب embed كنید. برای این كار دقیقا همانند مثال قبلی عمل كنید وباز هم یادآوری می كنیم كه نام گذاری فیلم را به صورت صحیح در بر چسب های object و embed رعایت نمایید .

اضافه كردن تابعی برای اشاره به شی فیلم
توجه داشته باشید كه توابع جاوا اسكریپت برای فراخوانی فلش, از دو بخش عمده تشكیل می شوند. نخست, تابعی كه متد شی فلش را فراخوانی می كند و بخش دوم, تابعی است كه syntax صحیح برای اشاره به شی فلش را بر می گرداند . البته بخش دوم, كاملا وابسته به مرورگر مورد استفاده است. البته می توان شكل syntax صحیح را به صورت مستقیم (hard code) در درون تابع نخست به كار برد, اما به دلایل رعایت اصول برنامه نویسی, در اینجا ترجیح داده ایم كه چنین نكنیم. قطعه كد شماره 4, این اسكریپت را نشان می دهد .
در اسكریپت شماره 4, مقدار متغیر moviename را به نام فیلم فلش خود , تغییر دهید. پس از این مرحله, یعنی زمانی كه خیالمان از بابت نوع مرورگر و رسم الخط نوشتاری توابع, راحت شد, نوبت می رسد به بخش اصلی, یعنی همان تابعی كه متد فلش را فراخوانی می كند. برای این كار می توانیم به صورت زیر عمل كنیم :

Function Playmovie() {
thisMovie(movieName).Play();
}

بدین ترتیب بدون نگرانی از بابت نوع مرورگر, خواهیم توانست, متد فلش مورد نظر خود را فراخوانی نماییم .
اما می دانیم كه همیشه مسائل ظریفی در كار ایجاد می شوند كه باعث ایجاد تفاوت تئوری با آنچه در عمل رخ می دهد, می شوند (البته حقیقت مطلب آن است كه همواره تئوری های ضعیف با عمل تفاوت دارند و در صورتیكه تئوری به اندازه كافی مستحكم باشد, اساسا تفاوتی بین تئوری و عمل وجود نخواهد داشت). بگذریم, آنچه كه در اینجا باید دقت شود, آن است كه در كاربردهای اینترنتی, باید به زمان های بارگذاری اشیا توجه داشته باشیم. مثلا ممكن است كه شما قصد ارسال دستوری به فیلم فلش داشته باشید, اما در زمان انجام توابع این كار, هنوز شی فلش به طور كامل در صفحه وب بارگذاری نشده باشد . برای بررسی این قبیل موارد, می توان از روش های متفاوتی كمك گرفت. به عنوان مثال, می توانید از متد percentLoaded فلش برای این منظور بهره گرفت .
برای آنكه مثال خود را كامل كرده باشیم, یك گام دیگر را نیز به مجموعه عملیاتی كه تا كنون طی كرده ایم, اضافه می كنیم. همان طور كه در عمل هم همیشه چنین است, در اینجا سعی می كنیم تا رویدادی در صفحه وب بسازیم كه وقوع آن منجر به فراخوانی متد فلش شود. یكی از بهترین انتخاب هایی كه می توانیم در اینجا انجام دهیم, آن است كه كلیدی به صفحه وب بیفزاییم كه كلیك كردن آن, متد شی فلش را فراخوانی كند. برای این كار از اسكریپت شماره 5 استفاده می كنیم .
پس در اینجا با روش صحیح اجرای یك دستور جاوا اسكریپت بر روی یك شی فلش آشنا شدیم. شما می توانید از روش ها و تكنیك های مشابهی برای فراخوانی هر متد جاوا اسكریپتی كه توسط نرم افزار Flash Player پشتیبانی می شود , استفاده كنید .


لینک کوتاه پست
مطالب مرتبط با پست جاری
  • نکات مهم
    1- لطفا نظر خود را با زبان فارسی بیان کنید
    2- رایتم نظرات اسپم و تبلیغی شما را تایید نمی کند
    3- لطفا نظرات شما بدون ابهام و واضح باشد
  • نام
    ایمیل (منتشر نمی‌شود) (لازم)
    وبسایت
    :):(;):D;)):X:?:P:*=((:O@};-:B/:):S
    نظر خصوصی
    مشخصات شما ذخیره شود ؟[حذف مشخصات] [شکلک ها]
    کد امنیتی
به کانال تلگرام سایت ما بپیوندید