خانه » ادوبی فلش » ویژه سازی منوی راست کلیک فلش

ویژه سازی منوی راست کلیک فلش

ویژه سازی منوی راست کلیک فلش

همان طور که می دانید پلیر فلش دارای منوی راست کلیک شامل کنترلر هایی مربوطه به زوم و کنترل فریم ها و دیگر دسترسی ها به پلیر می باشد، این امکان توسط کدهای اکشن اسکریپت قابل تغییر و ویژه سازی می باشد.

اگر می خواهید در پروژه خود منوی راست کلیک اختصاصی داشته باشید و یا حتی در برخی از بخش های به عنوان ابزار از آن استفاده کنید و یا اطلاعات مربوطه به خودتان مثل ایمیل و یا شماره تماس را در منوی راست کلیک پروژه خود قرار دهید. می توانید توسط خصوصیت ContextMenu در فلش به راحتی این کار را انجام دهید ، در این مطلب به صورت مفصل در این مورد توضیح می دهیم.

قبل از شروع نمونه نهایی پروژه را برسی کنید. روی صفحه و روی لوگو راست کلیک کنید و عملکرد منوهای راست کلیک ویژه سازی شده  را برسی کنید.

برای مشاهده نیاز به فلش پلیر دارید

در این مطلب به موارد زیر می پردازیم :

  1. مخفی کردن آیتم های پیش فرض منوی راست کلیک.
  2. افزودن آیتم جدید به منوی راست کلیک.
  3. فعال کردن عملکرد آیتم جدید در منوی راست کلیک.
  4. افزودن آیتم منوی راست کلیک به یک شی.

مخفی کردن آیتم های پیش فرض منوی راست کلیک

برای مخفی کردن آیتم های پیش فرض منوی راست کلیک فلش می بایست از کلاس ContextMenu  استفاده کنیم. طبق معمول می بایست این کلاس را تعریف کرده و به یک متغییر نسبت بدهیم تا بتوانیم خصوصیات آن را تغییر داده و از آن استفاده کنیم. در این مطلب به صورت مرحله به مرحل به این موضوع می پردازیم.

برای شروع یک پروژه جدید فلش ، اکشن اسکریپت ۳ ایجاد می کنیم. سپس یک متغییر با نام my_menu از نوع contextMenu تعریف می کنیم :

var my_menu:ContextMenu = new ContextMenu();
برای مخفی کردن همه آیتم های منوی راست کلیک می توانیم از متد hideBuiltInItems() استفاده کنیم ، همان طور که از کد مشخص است این متد هیچ آرگمان ورودی ندارد :
var my_menu:ContextMenu = new ContextMenu();
my_menu.hideBuiltInItems();
حال برای این که این تغییرات در فلش اعمال شود می بایست منوی تعریفی خود را (my_menu) به contextMenu مربوطه به فلش نسبت بدهیم ، توجه داشته باشید اگر ابتدای  contextMenu چیزی ننویسید و یا this را بنویست به شی اصلی شما اشاره می کند ، در ادامه در مورد نسبت دادن به شی خواص هم توضیح خواهیم داد :
var my_menu:ContextMenu = new ContextMenu();
my_menu.hideBuiltInItems();
contextMenu = my_menu;
حال اگر پروژه را تست کنید متوجه می شوید که منوی های پیش فرض مربوط به زوم و کنترل بر روی فریم ها و … دیگر نمایش داده نمی شود. البته باید توجه داشته باشید که منوهای Setting و About را نمی توان به صورت معمول از منوی راست کلیک حذف نمود. در ضمن گزینه Debugger هم که مربوطه به شما در برنامه فلش هست هم یکی از مواری است که نمی توان آن را حذف نمود.

contextmenu_iflashlord_6

این متد راه سریع و ساده ای برای این کار می باشد، ولی شما می توانید گزینه ها را به صورت دستی مخفی کنید. شاید در پروژه شما نیاز داشته باشید برخی از موارد حذف نشده و باقی بمانند این امکان به شما دسترسی کامل تری برای مخفی کردن موارد می دهد. شما می بایست به شی builtInItems و عناصر مربوطه به آن مقدار boolean بدهید، برای مخفی شدن false و برای نمایش true ، البته به صورت پیش فرض همه این موارد true هستند.

var my_menu:ContextMenu = new ContextMenu();
my_menu.builtInItems.forwardAndBack = false;
my_menu.builtInItems.loop = false;
my_menu.builtInItems.play = false;
my_menu.builtInItems.print = false;
my_menu.builtInItems.quality = false;
my_menu.builtInItems.rewind = false;
my_menu.builtInItems.save = false;
my_menu.builtInItems.zoom = false;
contextMenu = my_menu;

 

این کد هم نتیجه ای شبیه به مورد قبلی خواهد داشت.

contextmenu_iflashlord_6

افزودن آیتم جدید به منوی راست کلیک

علاوه بر این که ما امکان حذف آیتم های منوی راست کلیک را داریم، امکان افزودن آیتم جدید را نیز دارید، برای این کار می بایست از کلاس ContextMenuItem استفاده کنید و آن را به شی customItems مربوطه به شی ContextMenu در این مثال (my_menu) اضافه کنیم. این کار را توسط متد push انجام می دهیم.

ContextMenuItem دارای ۴ آرگمان ورودی می باشد که در نمونه های این مطلب ما فقط مقدار متن نمایش که آرگمان اول می باشد وارد می کنیم ، آرگمان ها به ترتیب شامل متن ورودی برای نمایش در منوی راست کلیک (String) ، قرار دادن خط قبل از آیتم منو (Boolean) ، فعال بودن یا غیر فعال بودن (Boolean) ، نمایش یا عدم نمایش (Boolean) می باشد. البته این آرگمان های با مقدار دادن مستقیم به شی مربوطه نیز قابل مقدار دهی می باشد که در ادامه مطلب به آن اشاره می کنیم:

var my_menu:ContextMenu = new ContextMenu();
my_menu.hideBuiltInItems();

var my_notice = new ContextMenuItem("IFLashLord.com");
my_menu.customItems.push(my_notice);

contextMenu = my_menu;

با تست کد بالا این نتیجه را در راست کلیک مشاهده خواهید کرد.

contextmenu_iflashlord_1

شما این امکان را دارید که چندین مورد را به راست کلیک اضافه کنید در ادامه ما دو آیتم دیگر نیز به پروژه اضافه می کنیم، توجه کنید که می بایست نام شی مربوطه به دیگر آیتم ها را نیز در متد push قرار دهید و آنها را با کاما از هم جدا نمایید :

var my_menu:ContextMenu = new ContextMenu();
my_menu.hideBuiltInItems();

var my_notice = new ContextMenuItem("IFLashLord.com");
var my_email = new ContextMenuItem("me@iflashlord.com");
var my_copyright = new ContextMenuItem("Copyright © ۲۰۱۴");

my_menu.customItems.push(my_notice, my_email, my_copyright);
contextMenu = my_menu;

نتیجه کد بالا افزوده شدن آیتم های جدید به منوی راست کلیک می باشد.

contextmenu_iflashlord_3این خصوصیات برای کلاس ContextMenuItem قابل تغییر می باشد ، این خصوصیات همان مواردی می باشد که در واقع آرگمان های این کلاس می باشد

  1. caption – متن نمایشی آیتم به صورت رشته متنی.
  2. enabled – فعال کردن امکان کلیک روی آیتم.
  3. separatorBefore – افزودن خط جدا ساز قبل از آیتم.
  4. visible – مخفی و نمایان کردن آیتم.

این خصوصیات به صورت مستقیم قابل استفاده و تغییر می باشند در این بخش متن مربوط به کپی رایت را غیر فعال می کنیم و یک خط جدا کننده قبل از آن قرار می دهیم:

var my_menu:ContextMenu = new ContextMenu();
my_menu.hideBuiltInItems();

var my_notice = new ContextMenuItem("IFLashLord.com");
var my_email = new ContextMenuItem("blue_chi@roc.com");
var my_copyright = new ContextMenuItem("Copyright - 2009");

my_copyright.enabled = false;
my_copyright.separatorBefore = true;

my_menu.customItems.push(my_notice, my_email, my_copyright);
contextMenu = my_menu;

با تست نمونه شما می بینید که گزینه مربوطه غیر فعال شده است و دیگر امکان کلیک روی آن وجود ندارد و این که یک خط نیز برای جدا سازی قبل از آن قرار گرفته است.

contextmenu_iflashlord_4تا این مرحله می توانید آیتم های جدیدی به منوی راست کلیک اضافه کنیم در ادامه به اعمال عملکرد به آیتم های می پردازیم مثلا شما می خواهید با کلیک بر روی یک آیتم وب سایت شما باز شود و یا فلش شما به بخش دیگر حرکت کند و یا موارد دیگر این کار توسط تعریف رویداد برای آیتم امکان پذیر می شود.

 فعال کردن عملکرد آیتم جدید در منوی راست کلیک

برای اجرا شدن یک عملکرد با کلیک بر روی یک آیتم ما نیاز به تعریف یک رویداد داریم و طبق معمول این کار را توسط متد addEventListener انجام می دهیم، برای دریافت رویداد مربوطه به انتخاب آیتم ما از ContextMenuEvent و MENU_ITEM_SELECT به عنوان رویداد استفاده می کنید و این رویداد را به شی ContextMenuItem خود (در این مثال my_notice) نسبت می دهیم.

در این نمونه با کلیک بر روی آیتم اول (IFLashLord.com) شما تابع openLink را اجرا کرده و طبق کدی که درون این تابع قرار داده ایم لینک مربوطه به وب سایت باز می شود:

var my_menu:ContextMenu = new ContextMenu();
my_menu.hideBuiltInItems();

var my_notice = new ContextMenuItem("IFLashLord.com");
var my_email = new ContextMenuItem("me@iflashlord.com");
var my_copyright = new ContextMenuItem("Copyright © ۲۰۱۴");

my_copyright.enabled = false;
my_copyright.separatorBefore = true;

function openLink(e:ContextMenuEvent):void{
    navigateToURL(new URLRequest("http://www.iflashlord.com"));
}
my_notice.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, openLink);

my_menu.customItems.push(my_notice, my_email, my_copyright);

contextMenu = my_menu;

افزودن آیتم منوی راست کلیک به یک شی

همان طور که امکان ویژه سازی منوی فلش وجود دارد امکان مجزا کردن منوی شی های مختلف در فلش نیز وجود دارد ، در این نمونه ما یک شی از نوع MovieClip ایجاد کردیم و حال برای آن یک instance name یا نام تعریف می کنیم تا امکان دسترسی به آن در اکشن اسکریپت را داشته باشیم در این مثال نام این شی را logo_mc قرار داده ایم.

تمامی کار مانند نمونه های قبل می باشد فقط مرحله آخر که منوی تعریف شده را به contextMenu نسبت می دادیم حال به contextMenu مربوط به شی مورد نظر خود (logo_mc) نسبت می دهیم :

var my_logo_menu:ContextMenu = new ContextMenu();
my_logo_menu.hideBuiltInItems();

var my_logo_notice = new ContextMenuItem("I am Behrouz");

my_logo_menu.customItems.push(my_logo_notice);

logo_mc.contextMenu = my_logo_menu;

با تست نمونه می بینیم منوی مجزای برای بخش لوگو ایجاد شده است و با راست کلیک در خارج از بخش لوگو منوی تعریفی قبلی نمایش داده می شود.

contextmenu_iflashlord_2
شما همانند نمونه های قبل همه دسترسی ها مربوطه به آیتم ها را دارید برای مثال در این بخش ما آیتم این شی را غیر فعال می کنیم :

var my_logo_menu:ContextMenu = new ContextMenu();
my_logo_menu.hideBuiltInItems();

var my_logo_notice = new ContextMenuItem("I am Behrouz");
my_logo_notice.enabled = false;

my_logo_menu.customItems.push(my_logo_notice);

logo_mc.contextMenu = my_logo_menu;

contextmenu_iflashlord_5شما می توانید از این امکان در پروژه های مختلف استفاده کنید و پروژه فلش خود را پویا تر و کاربردی تر نمایید.

موفق و پیروز باشید

Print Friendly
تگ ها :
پیوند مطلب قبلی
پیوند مطلب بعدی

درباره بهروز پولادرگ

متولد : ۵ مرداد سال ۱۳۶۷ ، حرفه : ادوبی فلش ، برنامه نویسی و طراحی وب ، طراحی گرافیک ، مالتی مدیا ، نرم افزار های تحت وب

12 نظر

  1. سلام و درود بر پادشاه فلش
    من میخاستم یک فایل swf تولید کنم طوری که از روی سرور مستقیما فیلم رو بخونه و نشون بده، موفق هم شدم ولی هرکاری میکنم بلد نیستم کامپوننت پلیر رو هم بیارم. اگه میشه کمکم کنید، بی نهایت ممنون

    • سلام دوست گرامی
      منظور شما را درست متوجه نشدم لطفا مشکل را دقیق تر بیان کنید
      آیا محل کامپوننت را نمی دانید؟ در بخش window -> components
      آیا نمی توانید آن را استفاده کنید ؟ با کشیدن یک ویدئو در صفحه و یا این که کشیدن کامپوننت در صفحه و تنظیم کردن بخش مربوطه به آدرس ویدئو می توانید از کامپوننت پلیر استفاده کنید

      سوال را دقیق بپرسید

      موفق و پیروز باشید

  2. اردلان شاه وردی

    سلام آقای پولادرگ
    ممنون از پست تون بسیار عالی همراه با توضیحات کامل بود.
    منتظر پست های جدیدتون هستم

  3. سلام .
    خسته نباشید.
    می خواستم در یک فیلم فلش با کلیک بروی یک دکمه یک فیلم دیگر swf اجرا شوددر حالی که دکمه هاو کدنویسی آن اجرا شود. با دستوراتی که بلد بودم این کار را انجام دادم ولی کدهای فیلم دوم اجرا نشد. با تشکر از شما.

  4. سلام
    برای ساخت سی دی مولتی مدیا نیاز دارم چند فیلم از نوع mp4 را در فلش اجرا کنم.

    مشکلم در استفاده از برنامه mdm zinc اینه که با این کد:

    var myMP = new mdm.MediaPlayer(“C”, “C”, “75%”, “75%”, “none”, false, true, “C:\\12.mp4”);

    فیلم اجرا میشه ولی کنترل های مدیا پلیر مثل پلی و توقف که در مدیا پلیر ویندوز هست نشان داده نمیشود.

    دوم یک دکمه لازمه که پلیر متوقف و بازگردد به مکان قبلی صفحه مولتی مدیا.

    لطفا راهنمایی کنید.

    تشکر

  5. با سلام بنده مدتیه آموزش های شما رو پیگیری میکنم و جا داره تشکر ویژه کنم ازتون که لطفتون همیشه شامل حال ما مبتدی ها هست و همیشه سوالات رو جواب میدید. مدتیه دنبال یه کد هستم که نتونستم پیدا کنم و چاره آخر رو در این دیدم که بیام از شما بپرسم ! اونم کدی هست که وقتی موس رو روی بنر میبریم حالت شفافیت بوجود میاد شبیه همین که در بنر پایین سایتتون استفاده شده . چند راه مختلف مثل ساختن MovieClip به صورت مخفی که با Mouse Over نمایش داده بشه و چند مورد کد رو هم استفاده کردم ولی نتیجه نگرفتم ! ممنون میشم راهنمایی کنید بنده رو .

    • سلام

      راه ساده این هست که یک دکمه ایجاد کنید در فریم مربوطه به over یک MovieClip ایجاد کنید و در فریم بعدی آن حالتی که برای کلیک می خواهید ایجاد کنید
      در فریم over دورن آن MovieClip انیمیت حرکت یک شی که از رنگ Alpha صفر تا صد شروع می شود را توسط Motion ها ایجاد کنید
      اگر می خواهید در محدوده خاصی باشد توسط ماسک می توانید آن را محدود کنید

      حال زمانی که روی آن button موس برود این موی کلیپ اجرا می شود اگر می خواهید یک بار ایجاد شود در آخرین فریم از دستور stop() استفاده کنید ، با این کار با هر بار آوردن موس یک بار مووی کلیپ اجرا می شود

      البته راه های زیادی برای این کار هست نمایش توسط خصوصیت visible و یا alpha توسط اکشن و … با تعریف رویداد های مربوطه به MouseOver و MouseOut

      موفق و پیروز باشید

ارسال جواب

آدرس رایانامه شما منتشر نخواهد شد.فیلد های اجباری علامت گزاری شده اند *

*

رفتن به بالای صفحه