قرار گرفتن child swf بر روی محتویات parent swf

شروع موضوع توسط me_gorji ‏30 ژوئن 2013 در انجمن Action Script 3

  1. me_gorji

    me_gorji New Member

    ارسال‌ها:
    7
    تشکر شده:
    3
    امتیاز دستاورد:
    1
    با سلام و خسته نباشید خدمت دوستان
    من با ()loader , addchild یک swf رو به swf اصلی اضافه کردم اما الان که اجرا کردم child swf در زیر محتویات parent swf قرار می گیره.
    می خواستم ببینم چطوری میتونم موقع اجرا بیارمش روی بالاترین سطح MainTimeline قرار بگیره.
    ضمنا این رو هم بگم که timeline parent خودش لایه های زیادی داره.
     
    نوشته شده توسط me_gorji در ‏30 ژوئن 2013
  2. ultra1383

    ultra1383 Active Member

    ارسال‌ها:
    121
    تشکر شده:
    26
    امتیاز دستاورد:
    28
    یه جستجویی در این زمینه بکن .(MovieClip(root
     
    نوشته شده توسط ultra1383 در ‏1 جولای 2013
  3. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    سلام
    این آموزش رو می زارم چون خیلی تو انجمن به این مورد برخوردم و دیدم این مورد برای دوستان زیادی سوال شده گفتم این آموزش رو بزارم:
    برای اینکه یه swf رو تو جایی اضافه کنید اولش باید یه Loader بسازید و با اون یه swf رو لود کنید و اونو addChild کنید.
    اگر قراره این Loader تو مثلا یه مووی کلیپ به اسم mc اضافه شه ،باید بنویسید :
    PHP:
    mc.addChild(myLoader);
    خوب در این حین ،اگه mc زیر لایه های دیگه تون باشه ،چون لودر هم تو اون اضافه شده ،پس ناچار زیر لایه های دیگه می افته.پس اگه Loader تو یه ظرفی (مووی کلیپ) باشه ،برا اینکه بیاد بالا باید ظرفه رو جابه جا کنید نه لودر رو.اما اگه لودر در کنار مووی کلیپ ها و لایه های دیگه هست ،باید لودر رو جا به جا کنید:
    حالا برا اینکه یه displayObject رو جلو عقب ببرید (پشت اشیای دیگه یا روی اشیای دیگه بیفته) باید depth (اکشن 2) و یا Index اونو (اکشن 3) عوض کنید.راههای زیادی برا دستکار هست.ولی بهترین راهش استفاده از setChildIndex هست.یعنی اگه مثلا لودر تو یه مووی کلیپ اضافه شده و اون مووی کلیپه بین هزاران مووی کلیپ دیگه هست که همشون تو یه مووی کلیپ والدی به نام PARENTMC (مثلا) اضافه شده اند (کلی مووی کلیپ که تو PARENTMC اضافه یا addChild شدند و باید mc رو همشون بیفته) به صورت زیر استفاده کنید :
    برا اینکه mc1 روی مثلا همسایه اش به نام mc2 بیفته(بابای جفتشون PARENTMC هست) باید بنویسید :
    PHP:
    MovieClip(PARENTMC).swapChildren(PARENTMC.mc1,PARENTMC.mc2);
    و برای اینکه mc1 رو کل همسایه هاش بیفته ، باید دستور زیر رو بنویسید :
    PHP:
    MovieClip(PARENTMC).setChildIndex(mc1,PARENTMC.numChildren-1);
    و البته می تونید mc1 رو در هر ایندکسی که خواستید به شری که اندکس مد نظر بین 0 تا تعداد بچه های کانتینر منهای یک باشه بندازید :
    PHP:
    MovieClip(PARENTMC).setChildIndex(mc1,5);
    البته وقتی به یه شی مووی کلیپ یا Sprite خالی یه شی رو اضافه کنید ( چه به روش دستی و درگ و چه رسم شکلی در آن و چه اضافه کردن اضیایی مثل تسکت فیلد و چه اضافه کردن با addChild و ...) اون شی نمایشی می ره تو ایندکس 0 قرار می گیره.در واقع یه مووی کلیپ مثل یه ارایه هست که از خونه شماره صفر ایندکس هاشو شروع می کنه.شی بعدی تو ایندکس 1 و بعدی تو 2 و ... و شی n ام تو ایندکس n-1 قرار می گیره.پس به ظرطی می تونید ایندکس اشیای اضافه شده رو تغییر بدین که بین صفر تا تعداد اشیای داخل اون مووی کلیپ منهای 1 باشه.(PARENTMC.numChildren-1) در اینصورت ایندکس 0 ،شی رو پشت همه اشیای دیگه و ایندکس numChildren-1 جلوی همه اشیا می یاره.
    دو تا سمپل هم براتون آماده کردم که دیدنشون خالی از لطف نیست :
    -----------------------------------------------------------------------------
    PHP:
    import flash.utils.setInterval;
    import flash.display.MovieClip;

    var position:Boolean=false;//بولینی برای ذخیره نوبت بالا آمدن یکی از دو مووی کلیپ مذکور
    var id:int=0;

    id=setInterval(ChangeIndexes,1000);//هر یک ثانیه یا معادل هزار میلی ثانیه ،تابع مذکور اجرا می شود

    function ChangeIndexes():void
    {
        position=!position;//برعکس شدن بولین برای تغییر شیفت بالا آمدن
        if(position)
            MovieClip(MainContainer).swapChildren(MainContainer.mc1,MainContainer.mc2);
        else
            MovieClip(MainContainer).swapChildren(MainContainer.mc2,MainContainer.mc1);
    }
    -----------------------------------------------------------------------

    PHP:
    import flash.utils.setInterval;
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.display.DisplayObject;
    import flash.filters.DropShadowFilter;

        AddEvents(MainContainer.mc1);
        AddEvents(MainContainer.mc2);
        AddEvents(MainContainer.mc3);
        AddEvents(MainContainer.mc4);
        AddEvents(MainContainer.mc5);
        AddEvents(MainContainer.mc6);

    function AddEvents(object:DisplayObject):void
    {
        object.addEventListener(MouseEvent.MOUSE_DOWN,dragIt);
        object.addEventListener(MouseEvent.MOUSE_UP,dropIt);
    }
    function dragIt(evt:MouseEvent):void
    {
        evt.currentTarget.startDrag();
        evt.currentTarget.filters=[new DropShadowFilter(6,45,0,0.8,8,8,2,2)];
        MovieClip(MainContainer).setChildIndex(MovieClip(evt.currentTarget),MainContainer.numChildren-1);
    }
    function dropIt(evt:MouseEvent):void
    {
        evt.currentTarget.stopDrag();
        evt.currentTarget.filters=[];
    }
     

    پیوست ها:

    نوشته شده توسط ++Hadi++ در ‏1 جولای 2013
    javadsavary، splinter cell، persiangolf.ir و 3 نفر دیگر از این ارسال تشکر کرده اند.
  4. me_gorji

    me_gorji New Member

    ارسال‌ها:
    7
    تشکر شده:
    3
    امتیاز دستاورد:
    1
    آقا هادی دستت درد نکنه خیلی مفید بود
     
    نوشته شده توسط me_gorji در ‏5 جولای 2013
    r.miri19 و ++Hadi++ از این پست تشکر کرده اند.
  5. persiangolf.ir

    persiangolf.ir Member

    ارسال‌ها:
    88
    تشکر شده:
    13
    امتیاز دستاورد:
    8
    من اتفاقا تو همین گیر کرده بودم دستت درد نکنه....هادی جان
     
    نوشته شده توسط persiangolf.ir در ‏16 اکتبر 2013
    ++Hadi++ از این پست تشکر کرده است.
  6. persiangolf.ir

    persiangolf.ir Member

    ارسال‌ها:
    88
    تشکر شده:
    13
    امتیاز دستاورد:
    8
    سلام اقا هادی ....من چند تا مووی کلیپ دام تو استیج حالا اینا رو چه جوری جلو و عقب کنم //؟؟تازه خود این مووی کلیپ ها عکس داخلشون رواز بیرون لود میکنن....من اینجوری نوشتم
    [PHPS]//setChildIndex(B1,0);
    setChildIndex(shora,numChildren-1);
    //setChildIndex(shora,numChildren-1);
    setChildIndex(bg,1);[/PHPS]
     
    آخرین ویرایش: ‏18 اکتبر 2013
    نوشته شده توسط persiangolf.ir در ‏18 اکتبر 2013
  7. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    PHP:
    parentOfMovieClip.setChildIndex(TargetMovieClipName,Index);
    یادت باشه Index ها از صفر تا numChildren-1 شی parent اون مووی کلیپ هست و انتخاب index صفر اونو عقب عقب می بره و هر چی index های بالاتر تا numChildren-1 بهشون بدی ،بالا و بالاتر می یان...منظور از بالا اومدن ،جلو اومدن و رو اشیای هم زاد قرار گرفتن هست.
     
    نوشته شده توسط ++Hadi++ در ‏18 اکتبر 2013
    persiangolf.ir از این پست تشکر کرده است.
  8. persiangolf.ir

    persiangolf.ir Member

    ارسال‌ها:
    88
    تشکر شده:
    13
    امتیاز دستاورد:
    8
    سلام اقا هادی ممنون ولی شما جواب کلی دادید

    منظورم اینکه وقتی چند تا مووی کلیپ دارم تو استیج واسه ترتیبش چه کدی مخواد مثلا باید بنویسم
    stage.setchildrenIndex یا مثلا چیزی دیگه ای؟
     
    نوشته شده توسط persiangolf.ir در ‏18 اکتبر 2013
  9. ++Hadi++

    ++Hadi++ Active Member

    ارسال‌ها:
    3,529
    تشکر شده:
    5,802
    امتیاز دستاورد:
    36
    اگه همشون تو یه فریم و کنار هم ،بچه های اصلی stage هستند ، باید با همون روشی که گفتید بنویسید...البته root هم می تونه باشه...
     
    نوشته شده توسط ++Hadi++ در ‏18 اکتبر 2013

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