ورود

View Full Version : مقاله: ارتباط با AS2 از درون ActionScript 3



BOB
چهارشنبه 30 اسفند 1391, 13:46 عصر
اگر از برنامه‌نویسان باسابقه ActionScript 3 بوده باشید، ممکن است گاهی نیاز پیدا کرده باشید که از یک فایل طراحی شده در ActionScript 2 در یک پروژه مبتی بر AS3 استفاده نمایید.

ممکن است تصور کنید که هیچ دلیل موجهی برای انجام این کار وجود ندارد!؟ یا چرا با داشتن یک تکنولوژی جدید و پیشرفته، همچنان باید از نسل گذشته آن استفاده نمود؟

اما یکی از دلایل مهمی که ممکن است استفاده از یک فایل طراحی شده در AS2 را در AS3 توجیه کند، وجود برخی کامپوننتها و ابزارهای مهمی است که نسخه معادل آنها هنوز در AS3 طراحی نشده است. و یا اینکه ممکن است به استفاده مجدد از یک پروژه قدیمی نیاز داشته باشید که source آن در دسترس نیست.

در هر صورت امکانات مورد نیاز برای عبور از بحران در چنین شرایطی، در شئ ویژه‌ای به نام LocalConnection موجود در کتابخانه flash.net قرار داده شده است.

با استفاده از این شئ و ایجاد یک ارتباط محلی (Local Connection) امکان ارسال و دریافت فرامین و دستورات مورد نیاز، بین هر دو فایل SWF در حال اجرا فراهم می‌گردد.
این دو فایل SWF که به نوعی همان Client و Server در یک ارتباط محلی محسوب می‌گردند، می‌توانند شرایط متفاوتی داشته باشند، که به عنوان مثال:



یک فایل SWF و یک فایل EXE-Projector باشند.
یکی در مرورگر وب و دیگری در فلش پلیر باز شده باشد.
در دو فایل در یک پروژه بارگذاری شوند.
دو فایل در دو وبسایت و دامنه متفاوت باشند.
یک فایل آنلاین و یک فایل محلی باشند.
هر کدام در نسخه متفاوتی از ActionScript طراحی شده باشند.
و هر حالت دیگری که می‌توان دو فایل swf در حال اجرا داشت.



در هر صورت ایجاد یک چنین ارتباطی (عبور از دروازه زمان) در دو مرحله انجام می‌شود.

مرحله اول: ایجاد Server و ساخت LocalConnection در ActionScript 2

با استفاده از کلاس LocalConnection یک ارتباط محلی ایجاد کرده و نامی برای آن تعیین می‌نماییم. سپس دستورات مورد نیاز برای استفاده از کامپوننت یا فایل قدیمی را طراحی نموده و به صورت توابعی در ارتباط محلی قرار می‌دهیم:


var bridge:LocalConnection = new LocalConnection();
bridge.connect("ConnectionMutex");

bridge.command1 = function( param1, param2 ) {
// Receive parameters from AS3
// Send parameters to AS2
}

bridge.command2 = function( param1, param2 ) {
// Receive parameters from AS3
// Send parameters to AS2
}

مرحله دوم: ایجاد Client و فراخوانی دستورات در ActionScript 3

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


var bridgeLoader:Loader = new Loader();
var ready:Boolean = false;

bridgeLoader.contentLoaderInfo.addEventListener(Ev ent.COMPLETE, completeHandler);

function completeHandler(e:Event) {
trace("Loaded. ");
ready = true;
}

برای ایجاد ارتباط نیز از شئ LocalConnection و دستور Send استفاده می‌نماییم:


if (ready) {
var bridge:LocalConnection=new LocalConnection();

bridge.addEventListener(StatusEvent.STATUS, errHandler);

function errHandler(e:StatusEvent) {
trace(e.level);
}

bridge.send("ConnectionMutex", "command1 ", param1Value, param2Value);
bridge.send("ConnectionMutex", "command2 ", param1Value, param2Value);
}