افزونه 1 جایگذین دستور level_ در اکشن سه برای فراخوانی یک فانکشن از فایل لود شده

nenrco

New Member
سلام به دوستان
من تازه به اکشن سه اومدم و یه سوال داشتم
ابتدا از اینجاشروع میکنم
ما قبلا تو اکشن 2 وقتی یه فایل swf رو لود میکردیم براش یه لایه مثلا لایه 1 در نظر میگرفتیم
(loader.loadMovie(myswf.swf,1
بعد اگر میخواستیم از داخل فایل myswf یه فانکشنی رو تو محل لود یا همون تمپلیت فرا خوانی کنیم با دستور
()level0.myfunction_ که داخل فایل myswf نوشته میشد داخل فایل اصلی یا همون تمپ رو فراخوانی میکردیم و نتیجه نمایش داده میشد
حالا تو اکشن 3چه کار باید بکنیم .
اولا ما در اکشن سه میتونیم به فایل لود شده level بدیم
دوما تو سایتهای خارجی خوندم که میشه با دستور ( MovieClip(root این کار رو کرد ولی نتونستم
اگر میشه راهنمایی فرمایید
با تشکر از شما
 

nenrco

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

BehrouzPc

پــــادشــاه فــلــــش
PHP:
var mLoader:Loader = new Loader();
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.load(new URLRequest("B.swf"));

public function onCompleteHandler(evt:Event)
{
    var embedSWF:MovieClip = MovieClip(evt.target.content);
    addChild(embedSWF);
    embedSWF.function_OF_B();
}

فکر می کنم منظور شما این باشد function_OF_B نام تابعی هست که در فایل B.swf تعریف کرده اید

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

nenrco

New Member
با سلام
اولا با تشکر از وقتی که برای مطالعه سوال و پاسخ برای او گذاشتید
ولی اینطور که از پاسخ شما مشخص است در اصل یک تابعی داخل فایل B.swf ی که لودش میکنید هست که اون رو میخواهیم از داخل محل لود صدا بزنیم .که البته من منظورم دقیقا معکوس این است .البته اگر منظورتون رو از متن پاسخ درست گرفته باشم
من دقیقا میخوام از داخل فایل B.swf که لود شدهبه سطح بالاتر اون که محل لود یا همون content Loader هست دسترسی داشته باشم .یعنی فرض کنید که در content loader یک تابع یا متغیری هست که از داخل فایل b.swf میخواهم اون رو فراخوانی کنم. یک فایل هم ارسال میکنم و در ان فایلB در content loader لود شده و در فریم اول Contentloader یک متغیر به نام myvar 1 دارم که مقدار 1000 را دارد . از طرفی در فایل B نیز می خواهم کدی بنویسم که بتوانم مقدار متغیر myvar1 را بخوانم
باز هم از توجه شما سپاس گذارم
منتظر جواب شما هستم
 

پیوست ها

  • call function.rar
    8.5 کیلوبایت · بازدیدها: 3
آخرین ویرایش:

BehrouzPc

پــــادشــاه فــلــــش
برای این کار ساده ترین روش استفاده از لوکال کانکشن هست
این مقاله را مطالعه کنید (البته مقاله موضوع دیگری را مطرح می کند ولی فکر می کنم برای مساله شما خوب باشد) ارتباط دو طرفه در این روش در دسترس شما هست
 

nenrco

New Member
درود بر شما بهروز عزیز
اولا که چه سایت باهالی داری
دوما از کمک شما سپاس گذارم .
چک میکنم خبر می دهم چون من هر دو فایلم از اکشن سه هست . البته فکر نمیکنم فرقی کنه
باز هم ممنون و سپاس گذارم .
 

nenrco

New Member
سلام بهروز جان
تست کردم کلا برای همه چیز چه اکشن 2 به 3 که خودت گفتی - اکشن 3 به 3 و از Air به SWF و ... جواب میده
سپاس صمیمانه من را بپذیرید .
 

nenrco

New Member
سلام مجدد من به این پست مجددا برگشتم چون یه مشکلی برام در این ارتباط به وجود اومد که می خواستم باز از شما راهنمایی بگیرم.
همونطور که در پست قبلی گفتم ارتباط بین دو فایل swf از این طریق با راهنمایی های شما انجام شد ولی ....
حالا در حال استفاده کردن در کارم هستم ولی چون یک طرف این ارتباط یک فایل swf و یک طرف دیگر فایل AIR هست ( که برای اندروید ساخته شده ) این ارتباط بر قرار نمیشود تا بتونیم فانکشنی که داخل فایل AIR هست رو از داخلSWF صدا بزنیم
یعنی َAir is reciver و SWF is sender.
در برخی از سایت های خارجی هم که مطالعه کردم مواردی رواز قبیل استفاده از myLC.allowDomain نوشته بودن که مشکلم رو برطرف نکرد.
حالا میخواستم ببینم آیا از این روش و ارتباط نمیشود برای ارتباط بین دو فایل که یکی Air for Android هست و دیگری یک فایل SWF هست استفاده کرده ؟
اگر نمیشود راه حل جایگزینی دارد ؟
با تشکر
 

BehrouzPc

پــــادشــاه فــلــــش
سلام ، این عملکرد برای ایر فعال هست ولی برای AIR for Android و AIR for IOS خیر....
 

nenrco

New Member
پس فکرم درست بود . ممنون
حالا راه حل جایگزینی برای این ارتباط هست که بتونیم ازش استفاده کنیم یا خیر
یا بهتره سوالم رو اینطور بپرسم که بجای دستور level0_ که در AS2 استفاده میشود دستور جایگزینی هست . چون تا الان هر دستوری رو که در AS2 استفاده میکردیم رو یه جایگذینی براش تو AS3 داشتیم .
ممنون میشم که جواب اسن سوال من رو بدبد و راهنماییم کنید .
با تشکر فراوان .
 

BehrouzPc

پــــادشــاه فــلــــش
اگر هر دو فایل as3 باشد می توانید از این طریق به توابع فایل لود شده دسترسی داشته باشد و تابعی جهت ارتباط ایجاد کنید مثلا

PHP:
var mLoader:Loader = new Loader();
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.load(new URLRequest("B.swf"));

public function onCompleteHandler(evt:Event)
{
    var embedSWF:MovieClip = MovieClip(evt.target.content);
    addChild(embedSWF);
    embedSWF.function_OF_B();
}

و از دورن فایل لود شده هم مثلا به این طریق عمل کنید

PHP:
addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
function addedToStageHandler(event:Event):void {
  // parent.parent points to the main timeline.
  MovieClip(parent.parent).function_OF_A();
}
 

nenrco

New Member
سلام بهروز جان .ممنونم که وقت میزاری و جواب سوالات ما رو میدی
امتحان کردم و جواب گرفتم . من بیشتر برای ارتباط بین فایل AIR for Android باSWF که در اون لود شده میخواستم که این ارتباط برقرار بشه که این اتفاق افتاد
بسیار سپاس گذارم
حالا وقتی میخوایم فایل SWF رو از Server یا اینترنت بخونیم زمان صدا زدن فانکشن A ایراد Security Sandbox Violation رو میگیره
برای بر طرف کردن این مشکل چه راه حلی وجود داره.

فقط میخواستم با اجازه شما چند نکته رو برای کسانی که به این پست بعد ها مراجعه می کنن بگم :( چه جسارتا :wink:)
اولا : حتما احتیاج به گذاشتن Event.ADDED_TO_STAGE نیست و آقا بهروز مثال زدندو شما متونید function _of_A رو در هرجای فریم های فایل SWF که خواستید بزارید
دوما : همونطور که آقا بهروز اشاره کردند به تعداد لایه هایی که در فایل SWF فانگشن رو قرار میدید باید parent بزارید .
یعنی اگر این فانکشن رو میخواید در یک مووی کلیپ و در روت بگذارید باید از دو تا parent استفاده کنید.
باز هم ببخشید.


با تشکر از شما


 
آخرین ویرایش:

BehrouzPc

پــــادشــاه فــلــــش
سلام

Event.ADDED_TO_STAGE برای دسترسی به داده های stage , parent ,.... هست که برای کلاس ها کاربرد دارد و داخل فلش لازم نیست

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

92yekta92

New Member
سلام
من تازه کارم
می خواستم یک فایل swf خارجی مثلا حرکت بادکنک در صورت جواب درست برام نشان بده . فایل لود می شه اما با بستن صفحه بادکنکها صفحه ی برنامه ی اصلی هم بسته می شه لطفا در صورت امکان راهنمایی بفرمایید.سپاس
 

جدیدترین ارسال ها

بالا