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

شروع موضوع توسط nenrco ‏23 سپتامبر 2014 در انجمن Action Script 3

  1. nenrco

    nenrco New Member

    ارسال‌ها:
    26
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    سلام به دوستان
    من تازه به اکشن سه اومدم و یه سوال داشتم
    ابتدا از اینجاشروع میکنم
    ما قبلا تو اکشن 2 وقتی یه فایل swf رو لود میکردیم براش یه لایه مثلا لایه 1 در نظر میگرفتیم
    (loader.loadMovie(myswf.swf,1
    بعد اگر میخواستیم از داخل فایل myswf یه فانکشنی رو تو محل لود یا همون تمپلیت فرا خوانی کنیم با دستور
    ()level0.myfunction_ که داخل فایل myswf نوشته میشد داخل فایل اصلی یا همون تمپ رو فراخوانی میکردیم و نتیجه نمایش داده میشد
    حالا تو اکشن 3چه کار باید بکنیم .
    اولا ما در اکشن سه میتونیم به فایل لود شده level بدیم
    دوما تو سایتهای خارجی خوندم که میشه با دستور ( MovieClip(root این کار رو کرد ولی نتونستم
    اگر میشه راهنمایی فرمایید
    با تشکر از شما
     
    نوشته شده توسط nenrco در ‏23 سپتامبر 2014
  2. nenrco

    nenrco New Member

    ارسال‌ها:
    26
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    با سلام مجدد
    میخواستم ببینم در مورد سوال من کسی میتونه راهنمایی که
    با تشکر
     
    نوشته شده توسط nenrco در ‏24 سپتامبر 2014
  3. BehrouzPc

    BehrouzPc پــــادشــاه فــلــــش

    ارسال‌ها:
    1,909
    تشکر شده:
    3,510
    امتیاز دستاورد:
    113
    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 تعریف کرده اید

    موفق و پیروز باشید
     
    نوشته شده توسط BehrouzPc در ‏24 سپتامبر 2014
  4. nenrco

    nenrco New Member

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

    پیوست ها:

    آخرین ویرایش: ‏25 سپتامبر 2014
    نوشته شده توسط nenrco در ‏25 سپتامبر 2014
  5. BehrouzPc

    BehrouzPc پــــادشــاه فــلــــش

    ارسال‌ها:
    1,909
    تشکر شده:
    3,510
    امتیاز دستاورد:
    113
    برای این کار ساده ترین روش استفاده از لوکال کانکشن هست
    این مقاله را مطالعه کنید (البته مقاله موضوع دیگری را مطرح می کند ولی فکر می کنم برای مساله شما خوب باشد) ارتباط دو طرفه در این روش در دسترس شما هست
     
    نوشته شده توسط BehrouzPc در ‏25 سپتامبر 2014
    nenrco از این پست تشکر کرده است.
  6. nenrco

    nenrco New Member

    ارسال‌ها:
    26
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    درود بر شما بهروز عزیز
    اولا که چه سایت باهالی داری
    دوما از کمک شما سپاس گذارم .
    چک میکنم خبر می دهم چون من هر دو فایلم از اکشن سه هست . البته فکر نمیکنم فرقی کنه
    باز هم ممنون و سپاس گذارم .
     
    نوشته شده توسط nenrco در ‏25 سپتامبر 2014
    BehrouzPc از این پست تشکر کرده است.
  7. nenrco

    nenrco New Member

    ارسال‌ها:
    26
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    سلام بهروز جان
    تست کردم کلا برای همه چیز چه اکشن 2 به 3 که خودت گفتی - اکشن 3 به 3 و از Air به SWF و ... جواب میده
    سپاس صمیمانه من را بپذیرید .
     
    نوشته شده توسط nenrco در ‏25 سپتامبر 2014
    BehrouzPc از این پست تشکر کرده است.
  8. nenrco

    nenrco New Member

    ارسال‌ها:
    26
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    سلام مجدد من به این پست مجددا برگشتم چون یه مشکلی برام در این ارتباط به وجود اومد که می خواستم باز از شما راهنمایی بگیرم.
    همونطور که در پست قبلی گفتم ارتباط بین دو فایل swf از این طریق با راهنمایی های شما انجام شد ولی ....
    حالا در حال استفاده کردن در کارم هستم ولی چون یک طرف این ارتباط یک فایل swf و یک طرف دیگر فایل AIR هست ( که برای اندروید ساخته شده ) این ارتباط بر قرار نمیشود تا بتونیم فانکشنی که داخل فایل AIR هست رو از داخلSWF صدا بزنیم
    یعنی َAir is reciver و SWF is sender.
    در برخی از سایت های خارجی هم که مطالعه کردم مواردی رواز قبیل استفاده از myLC.allowDomain نوشته بودن که مشکلم رو برطرف نکرد.
    حالا میخواستم ببینم آیا از این روش و ارتباط نمیشود برای ارتباط بین دو فایل که یکی Air for Android هست و دیگری یک فایل SWF هست استفاده کرده ؟
    اگر نمیشود راه حل جایگزینی دارد ؟
    با تشکر
     
    نوشته شده توسط nenrco در ‏10 اکتبر 2014
  9. BehrouzPc

    BehrouzPc پــــادشــاه فــلــــش

    ارسال‌ها:
    1,909
    تشکر شده:
    3,510
    امتیاز دستاورد:
    113
    سلام ، این عملکرد برای ایر فعال هست ولی برای AIR for Android و AIR for IOS خیر....
     
    نوشته شده توسط BehrouzPc در ‏10 اکتبر 2014
  10. nenrco

    nenrco New Member

    ارسال‌ها:
    26
    تشکر شده:
    5
    امتیاز دستاورد:
    1
    پس فکرم درست بود . ممنون
    حالا راه حل جایگزینی برای این ارتباط هست که بتونیم ازش استفاده کنیم یا خیر
    یا بهتره سوالم رو اینطور بپرسم که بجای دستور level0_ که در AS2 استفاده میشود دستور جایگزینی هست . چون تا الان هر دستوری رو که در AS2 استفاده میکردیم رو یه جایگذینی براش تو AS3 داشتیم .
    ممنون میشم که جواب اسن سوال من رو بدبد و راهنماییم کنید .
    با تشکر فراوان .
     
    نوشته شده توسط nenrco در ‏11 اکتبر 2014
  11. BehrouzPc

    BehrouzPc پــــادشــاه فــلــــش

    ارسال‌ها:
    1,909
    تشکر شده:
    3,510
    امتیاز دستاورد:
    113
    اگر هر دو فایل 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();
    }
     
     
    نوشته شده توسط BehrouzPc در ‏11 اکتبر 2014
  12. nenrco

    nenrco New Member

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

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


    با تشکر از شما


     
    آخرین ویرایش: ‏12 اکتبر 2014
    نوشته شده توسط nenrco در ‏12 اکتبر 2014
  13. BehrouzPc

    BehrouzPc پــــادشــاه فــلــــش

    ارسال‌ها:
    1,909
    تشکر شده:
    3,510
    امتیاز دستاورد:
    113
    سلام

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

    موفق و پیروز باشید
     
    نوشته شده توسط BehrouzPc در ‏12 اکتبر 2014
  14. 92yekta92

    92yekta92 New Member

    ارسال‌ها:
    1
    تشکر شده:
    0
    امتیاز دستاورد:
    1
    سلام
    من تازه کارم
    می خواستم یک فایل swf خارجی مثلا حرکت بادکنک در صورت جواب درست برام نشان بده . فایل لود می شه اما با بستن صفحه بادکنکها صفحه ی برنامه ی اصلی هم بسته می شه لطفا در صورت امکان راهنمایی بفرمایید.سپاس
     
    نوشته شده توسط 92yekta92 در ‏28 ژانویه 2018

به اشتراک بگذارید