كنترل پنل             جستجو               پرسشهای متداول            .:: آخرین پست‌های انجمن ::.            لیست اعضا            مدیران سایت             درجات        ورود
فهرست انجمن‌ها -> مسائل عمومي مالتي مديا -> برنامه Flash و نرم​افزارهاي وابسته
پاسخ دادن به این موضوع
آموزش تابع FsCommand و توضیحات اضافه
پست تاریخ: چهار‌شنبه 16 شهریور 1384 - 21:04    
maxpal97
سَرور ماست!
سَرور ماست!


پست: 855
عضو شده در: 23 مرداد 1384
محل سکونت: شیراز
blank.gif


امتياز: 8010

عنوان: آموزش تابع FsCommand و توضیحات اضافه خواندن مشخصات فردی ارسال پیام شخصی

ساختار كلي درستور fscommand به اين شكل است :

fscommand("command", "parameters");

تابع fscommand ، كاربرد هاي زيادي از جمله ارتباط اكشن اسكريپت با جاوا اسكريپت و ديگر زبان هاي برنامه نويسي مثل C داره ... كه من اينجا فرمان (command) هايي رو ميگم كه در خود فلش قابل اجرا هستن :

تابع پارامتر هدف
quit
ندارد براي خارج شدن از فيلم فلش .

fullscreen
trueيا false براي فول اسكرين كردن (يا نكردن) صفحه .

allowscale
true يا false براي ثابت كردن (يا نكردن) اندازه صفحه به هنگام تغيير ابعاد صفحه .

showmenu
true يا false براي مديريت بر روي گزينه هاي راست كليك و منو ها (نمايش دادن يا ندادن).

exec
مسير فايل هدف براي اجرا يك فايل exe خارج از محيط فلش..

trapallkeys
true يا false براي فعال كردن (يا نكردن) امكان استفاده از كليد هاي تركيبي و Esc.

1- quit : ميتوانيد براي خارج شدن از محيط انيميشن و يا برنامه نوشته شده با فلش ، دكمه اي براي خروج بگذاريد ، براي اين كار بايد از اين دستور به شكل زير استفاده كنيد :


on (release) {
fscommand("quit");
}
2- fullscreen : ميتوانيد براي فول اسكرين كردن در محيط انيميشن و يا برنامه نوشته شده با فلش ، از اين دستور استفاده كنيد ، براي اين كار بايد از اين دستور به شكل زير در فريم اول استفاده كنيد :


fscommand("fullscreen", true);
همچنين مي تونيد در فايل فلش تون دكمه اي براي فول اسكرين كردن بذاريد ...

3-allowscale : اگر پارامتر اين فرمان بر روي true تنظيم شود ، هنگام تغيير اندازه پنجره توسط كاربر ، اندازه فيلم فلش شما هم متناسب با آن تغيير مي ابد و بلعكس ( در فايل نمونه ، اندازه پنجره را تغيير دهيد و روي كليد چند بار كليك كنيد ، اين عمل را در حالات مختلف آزمايش كنيد)

4-showmenu : اگر پارامتر اين فرمان بر روي false تنظيم شود ، در گزينه هاي راست كليك ، فقط موارد Setting و About macromedia ...a ديده مي شود و منو هاي بالاي فلش پلير نمايش داده نميشود و بلعكس ( در فايل نمونه ، در پنجره كليك راست كرده ... سپس كليد را چند بار فشار داده و كليك راست و منو ها را بررسي كنيد)

4- exec : براي اجراي فايل هاي exe به كار مي رود. پارامتر اين فرمان بايد اسم فايل (مسير فايل) مورد نظر باشد ... توضيحي كه لازم مي دونم بدم اينه كه در ActionScript 2 شما بايد فايل اجراييتون رو در يك پوشه به نام fscommand بريزيد و در پارامتر فرمان فقط نام فايل و پسوند را به صورت String بنويسيد ... مانند اين :


fscommand("exec", "File.exe");


5- trapallkeys : در صورت false بودن پارامتر اين فرمان ، كليد هاي تكريبي و دكمه Esc از كار ميفتد ، براي مثال در حالت فول اسكرين فقط با زدن كليد هاي Ctrl+Alt+Delete ميتوان از فيلم خارج شد .

و اینک مشروح خبر

آشنايي با 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 پشتيباني مي شود, استفاده كنيد.

منبع خودم و مجله شبکه مشترکن

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست:

پست تاریخ: سه‌شنبه 10 آبان 1384 - 05:20    
ali
داره كولاك مي‌كنه!
داره كولاك مي‌كنه!


پست: 412
عضو شده در: 2 خرداد 1384
محل سکونت: زیر گنبد کبود
iran.gif


امتياز: 3591

عنوان: خواندن مشخصات فردی ارسال پیام شخصی ارسال email

اي ول ...........

بابا جون اين مطلب تا حالا كجا بوده .....

آقا ممنون ....

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست:

پست تاریخ: سه‌شنبه 10 آبان 1384 - 10:32    
maxpal97
سَرور ماست!
سَرور ماست!


پست: 855
عضو شده در: 23 مرداد 1384
محل سکونت: شیراز
blank.gif


امتياز: 8010

عنوان: خواندن مشخصات فردی ارسال پیام شخصی

خواهش ....

[ وضعيت كاربر: ]

تشکر کردن از پست  پاسخگویی به این موضوع بهمراه نقل قول 
تشکرها از این پست: fardinaslani (پنج‌شنبه 4 شهریور 1389 - 05:51)


نمایش پستها:                 مشاهده موضوع قبلی :: مشاهده موضوع بعدی  
پاسخ دادن به این موضوع
 

صفحه 1 از 1

تمام زمانها بر حسب GMT + 3.5 Hours می‌باشند
 Related Topics 


 information 

 

پرش به:  
شما نمی توانید در این بخش موضوع جدید پست کنید
شما نمی توانید در این بخش به موضوعها پاسخ دهید
شما نمی توانید موضوع های خودتان را در این بخش ویرایش کنید
شما نمی توانید موضوع های خودتان را در این بخش حذف کنید
شما نمی توانید در این بخش رای دهید


Copyright 2004-2024. All rights reserved.
© by Aftabgardan Cultural Center : Aftab.cc