ماکرومدیا فلش؛ فراتر از انیمیشن

Flash MX دیگر تنها یک ابزار تولید مالتى مدیا نیست بلکه آن را مى‏توان یک زبان برنامه نویسى ویژوال نامید.

فلش (Flash) یک نمایش دهنده گرافیکهاى بردارى بر روى وب (Web) است که قضاوت درباره آن بستگى به دیدگاه شما و مهارت طراح دارد. اما ماکرومدیا (Macromedia) ایده ‏هاى دیگرى دارد. در مصاحبه ‏اى جدید با “Jeremy Allarie” مدیر فن آورى ماکرومدیا، او اظهار نمود که: “ما کاملا بر روى تبدیل فلش به یک Client قدرتمند تمرکز نموده‏ایم و فکر مى‏کنیم که سازندگان نرم‏افزار آن را مفید خواهند یافت”. ایده این است که شما رابط کاربر نرم‏افزار خود را در فلش ساخته و قابلیت مستقل بودن از سکو (Platform) و یک سرى ویژگیهاى دیگر را بدست آورید که برخلاف Java براى گرافیک و مالتى‏مدیا بهینه شده‏اند. بنا به اظهار Allaire : “ما گستردگى ۹۸٫۳ درصد را بدست آورده‏ایم. این گسترده‏ترین میزان پخش یک برنامه در تاریخ کامپیوتر است.”

البته Client فلش مطمئناً در مقابل تواناییهاى Java چیزى براى گفتن ندارد و زبان برنامه‏نویسى آن اقتباسى از Javascript است. در عوض فلش داراى runtime کوچکى در حدود ۳۵۰KB است. همچنین انیمیشن‏هاى فلش نیاز ندارند که حتماً در صفحات وب درج شوند بلکه Projector فلش به شما امکان تولید فایلهاى .exe تحت ویندوز را مى‏دهد اگرچه باید وجود پنجره Projector پیرامون برنامه‏تان را بپذیرید. شما همچنین مى‏توانید یک انیمیشن فلش را درون یک فرم ویژوال بیسیک با استفاده از Shockwave Flash ActiveX Control درج نمایید.

اما اینکه کارى را مى‏توان انجام داد دلیل منطقى براى انجام آن نیست. چرا ما باید به جاى مثلا C++ ، Java یا ویژوال بیسیک از فلش استفاده کنیم؟ پاسخ این است که فلش انجام کارهایى که در محیطهاى دیگر دشوار است را آسان مى‏نماید. فلش یک ابزار عالى براى گرافیک و انیمیشن است. اگر شما مى‏خواهید یک رابط کاربر سفارشى با buttonها، tabها و Scrollbarهاى داراى ظاهرى منحصر به فرد ایجاد نمایید بهترین گزینه شما فلش است. همچنین قدرت انتخاب اجراى برنامه بصورت مستقل و یا تحت یک مرورگر (browser) بر جذابیت فلش مى‏افزاید. اما روى دیگر سکه آن است که فلش داراى ضعفهاى بیشمارى در ایجاد نرم افزارهاى همه منظوره است. تاکنون بزرگترین مشکل این بوده است که فلش داراى هیچ مکانیزم داخلى براى دسترسى به بانکهاى اطلاعاتى نیست. همچنین احتمالا شما قصد ندارید که الگوریتمهاى پیچیده تجارى را درون یک برنامه فلش کدنویسى نمایید. پس آنها را باید در کجا قرار داد؟

در Flash 5 روشهایى براى دسترسى به داده‏هاى خارجى وجود دارد. رویداد FsCommand داراى یک آرگومان به نام “exec” است که به شما اجازه مى‏دهد یک برنامه خارجى را اجرا نمایید و یا اگر در یک مرورگر استفاده شود یک اسکریپت سفارشى مرورگر اجرا مى‏گردد. LoadMovie یک Movie جدید فلش را درون Player فراخوانى مى‏کند و در صورت داشتن چیزى مشابه Generator بر روى سرور، امکان لود (load) داده‏ها و گرافیکها بصورت پویا نیز وجود دارد. GetURL به شما اجازه انجام GET یا POST یک URL از قبیل CGI Script یا Servlet و ارسال متغیرها بصورت پارامتر را مى‏دهد. LoadVariables قادر است مقادیر را از یک فایل بخواند. جالبتر از اینها XML Object است که اجازه مى‏دهد شما یک فایل XML را از یک URL لود و داده‏هاى XML را پس بفرستید. با استفاده از این تکنیکها شما مى‏توانید یک برنامه فلش که مى‏تواند با دنیاى خارج ارتباط برقرار کند، بسازید ولى این کار ساده‏اى نیست.

Flash Remoting :

Flash MX با دارا بودن ویژگى به نام Flash Remoting همه چیز را تغییر داده است این ویژگى به برنامه فلش شما اجازه برقرارى ارتباط با آبجکتهاى Server-Side شامل کلاسهاى Java، کامپوننتهاى Cold Fusion و یا سرویسهاى وب .NET را مى‏دهد.

Flash Remoting از یک پروتکل باینرى بهینه بر روى HTTP استفاده مى‏کند و براى استفاده از آن باید به یک سرویس Flash Remoting که پروتکل فلش را مى‏فهمد متصل شده و سپس سرویسهاى موردنیاز را فراخوانى نمایید. همچنین Flash Remoting API شامل آبجکتهاى Recordset و DataGlue است که براى نخستین بار فلش را داراى ویژگیهاى داخلى دسترسى به بانک اطلاعاتی نموده‏اند. براى مثال شما مى‏توانید با استفاده از متد SetDataProvider ، یک ListBox را به یک Recordset متصل نمایید.

محیط Server-side مورد توصیه ماکرومدیا براى Flash Remoting محیط Cold Fusion MX است. Cold Fusion یک زبان اسکریپت‏نویسى Server-side است که تا حدودى مشابه PHP ،ASP و JavaServer مى‏باشد. در نمونه جدید آن یعنى Tag ، Cold Fusion MXها به Java Servlet کامپایل و تبدیل شده و بر روى Java Aplication Server ماکرومدیا، JRun و یا محیطهاى دیگر J2EE اجرا مى‏گردند. یک مزیت این تکنیک در این است که مى‏توان به سادگى آن را با کلاسهاى Server-side دیگر Java یکپارچه نمود.

Cold Fudion MX داراى پشتیبانى داخلى از Flash Remoting Server است خوشبختانه براى کسانى که از تکنولوژیهاى دیگر استفاده مى‏کنند نیز سرویس Flash Remoting موجود است. این سرویس براى نصب بر روى ASP.NET و یا هر سرور J2EE قابل دسترسى مى‏باشد.

به هر حال این نرم‏افزار تنها در صورتى به شما کمک خواهد نمود که داراى یک Web server براى قراردادن کامپوننتهاى Server-side باشید. این نرم‏افزار به شما اجازه فراخوانى dllها یا آبجکتهاى COM محلى (local) را نمى‏دهد. بنابراین فلش جایگزین ویژوال بیسیک نخواهد شد. اگرچه اغلب برنامه‏هاى جدید مبتنى بر شبکه هستند و براى مستقل بودن از سکو، فراخوانى کتابخانه‏هاى محلى مشکل ساز خواهد بود.

رابط کاربر فلش:

Flash MX داراى عناصر رابط کاربر جدیدى است که براى سازندگان نرم‏افزار طراحى شده‏اند. این عناصر شامل Scroll Bar ،Radio Button PushButton ،ComboBox ،ListBox ،CheckBox وScrollPane مى‏گردد. فلش هم اکنون نیز داراى پشتیبانى خوبى از ورودى متن از طریق آبجکتهاى Text Field مى‏باشد.

در ادامه مثالى از ایجاد یک برنامه ساده فلش را خواهید دید. این مثال یک برنامه to-do list است که اغلب در معرفى و نمایش سازنده‏هاى فرم ویژوال به کار مى‏رود.

Flash MX -1 را اجرا و خصوصیات پهنا و درازاى Frame را به ترتیب برابر ۳۰۰ و ۳۵۰ پیکسل قرار دهید. پنجره Components را به نمایش درآورده و یک ListBox ، یک Input field و دو Button را بر روی آن قرار دهید.

۲- به آبجکتهاى فوق به ترتیب نامهاى btnAdd ، txtItem ، listToDo وbtnDelete را بدهید. به فیلد متنى، نام متغیر varItem را بدهید.

۳- یک layer جدید افزوده و آن را Script بنامید. در پانل Actions مطمئن شوید که لیست بالایى عبارت “Actions for Frame 1 of layer name Script” را نشان مى‏دهد. حال Expert Mode را انتخاب و کد زیر را وارد نمایید:

function AddToList() {
ListToDo.addItem (varItem);
}

function RemoveFromList () {
ListToDo.removeItemAt (ListToDo.getSelectedIndex());
}

براى اطمینان از وجود نداشتن Syntax Error در کد مى‏توانید بر روى علامت تیک آبى رنگ کلیک نمایید. خطاهاى احتمالى در پنجره Output ظاهر خواهند شد. ضرورتى ندارد که شما اسکریپتها را در layer جداگانه‏اى قراردهید اما این کار موجب سادگى مدیریت برنامه مى‏گردد.

۴- حال Layer1 را انتخاب نمایید. رویداد Click دکمه Add آن را بر روى AddtoList و رویداد Click دکمه Remove را بر روى RemoveFromList تنظیم نمایید.

۵- اجراى این Movie را بوسیله Control-Test Movie آزمایش نمایید. اگر همه چیز درست باشد شما مى‏توانید آیتمى را در فیلد متنى وارد و براى افزوده شدن آن به لیست دکمه Add را کلیک کنید. سپس آن را در لیست انتخاب و با زدن دکمه Remove حذف نمایید.

این یک مثال ساده است اما نشان مى‏دهد که فلش در ساخت رابطهاى کاربر ساده به راحتى ویژوال بیسیک مى‏باشد. ولى با این تفاوت که فلش مستقل از سکو بوده و در هر محیطى اجرا مى‏گردد و طراحان مى‏توانند به برنامه‏هاى خود انیمیشن، دکمه‏هاى سفارشى و جلوه‏هاى ویژه را بیفزایند که در ابزارهاى برنامه‏نویسى سنتى کار دشوارى است.

سالیان طولانى است که به برنامه‏نویسان توصیه مى‏شود از الگوهاى طراحى ارائه شده توسط مایکروسافت یا اپل استفاده نموده و برنامه‏هایى با ظاهر و عملکرد مشابه تولید نمایند. اما ظهور Web نشان داده است که تنوع و نوآورى نیز جایگاه ویژه‏اى دارد و ترکیب طراحى فلش با منطق برنامه نویسى ضرورى است.

زبان Actionscript :

احتمالا فکر اینکه باید یک زبان دیگر را نیز یاد بگیرید از هم اکنون شما را نگران کرده ولى نیازى به این کار نیست زیرا ActionScript در اصل همان JavaScript است که با نام Ecmascript یا بطور دقیقتر ECMA-262 نیز شناخته مى‏شود. اغلب برنامه‏نویسان JavaScript را آموخته‏اند بنابراین استفاده از ActionScript نباید براى آنها چندان مشکل باشد. البته فلش داراى مجموعه متفاوتى از آبجکتهاى قابل دسترس براى برنامه‏نویسى است که باید آنها را یاد گرفت.

خطایابى:

Flash MX داراى خطایاب (debugger) پیشرفته‏اى است. شما مى‏توانید با کلیک راست بر روى کد و انتخاب Set Breakpoint نقاط توقف را مشخص نمایید. با انتخاب Control-Debug Movie برنامه در حالتى که امکان خطایابى نیز فعال است اجرا مى‏گردد. در هنگام اجرا شما مى‏توانید مقادیر متغیرها و خصوصیات را دیده و کد را خط به خط اجرا نمایید.

تولید فایل نهایى:

پیش از اینکه فایل نهایى را تولید نمایید، تنظیمات بخش File-Publish را کنترل کنید. بطور پیش فرض گزینه‏هاى .swf و .html انتخاب شده‏اند. این به آن معنى است که فلش، فایل swf را که صورت کامپایل شده برنامه شما است را تولید و همچنین یک صفحه وب براى میزبانى آن مى‏سازد. اگر به کد HTML تولید شده نگاهى بیندازید چیزى مشابه کد زیر را خواهید دید.

<object classid=”clsid:D27CDB6E-AE6D-11cf-96B8-444553540000″ codebase= “http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0″ width=”300″ height=”350″> <param name=”movie” value=”Flash todo List.swf”>
<param name=”quality” value=”high”><param name=”BGCOLOR” value=”#FFFFFF”>
<embed src=”Flash todo List.swf” width=”300″ height=”350″ quality=”high” bgcolor=”#FFFFFF” pluginspage=”http://www.macromedia.com/go/getflashplayer” type=”application/x-shockwave-flash”> </embed>
</object>

تمام این کد براى ایجاد یک tag سازگار با Internet Explorer که از یک کنترل ActiveX استفاده مى‏کند و همچنین Netscape که از یک Plug-in استفاده مى‏کند مى‏باشد. شما مى‏توانید کد تولید شده را به سادگى از طریق Cut و Paste به صفحه وب خود منتقل نمایید. همچنین مى‏توانید از امکانات نرم افزارهاى ویرایش صفحات وب مانند Dreamweaver نیز براى درج فایل فلش استفاده نمایید.

البته ممکن است شما اصلا کارى به وب نداشته باشید، در این صورت مى‏توانید گزینه Windows Projector را انتخاب کنید. در این حالت فلش یک فایل اجرایى تحت ویندوز مى‏سازد که براى اجراى آن یک دبل کلیک کافى است. البته برنامه شما دیگر مستقل از سکو نبوده و وابسته به ویندوز است.

شاید مایل باشید قابلیت تغییر اندازه دادن برنامه را تغییر دهید. یک روش مناسب براى این کار استفاده از fsCommand است. اگر در یک رویداد load یک FsCommand اضافه کنید، لیستى با عنوان Commands for Standalone player را مشاهده خواهید نمود. در اینجا مى‏توانید قابلیت تغییر اندازه (Scaling) را فعال یا غیرفعال کرده و یا برنامه را براى شروع به صورت تمام صفحه (Full-screen) تنظیم نمایید که روشى خوب براى حذف منوهاى Projector در هنگام نمایش است.

بطور پیش فرض برنامه‏هاى فلش بگونه‏اى تغییر اندازه مى‏دهند که تمام عناصر برنامه متناسب با ابعاد پنجره کوچک یا بزرگ مى‏گردند. اما شاید این چیزى نباشد که شما مى‏خواهید. براى تغییر این موضوع مى‏توانید کد کوچکى را در سطح root لایه script وارد نماید. براى مثال:

fscommand(“allowscale”,”false”);
fscommand(“fullscreen”,”true”);

این گزینه‏ها برنامه را بصورت تمام صفحه و یا با اندازه‏اى ثابت اجرا خواهند نمود.

یک دستور مفید دیگر، دستور زیر است:

fscommand(“quit”)

آن را به یک رویداد مناسب متصل کنید تا رخ دادن آن موجب بسته شدن Projector گردد. در صورت تمایل مى‏توانید نسخه آزمایشى Flash MX و Cold Fusion MX و اطلاعات کامل‏ترى در مورد آنها را از سایت ماکرومدیا (http://www.macromedia.com/) دریافت نمایید.
مجله رایانه