خانه » ادوبی فلش » حذف کردن همه اشیای درون یک شی نمایشی

حذف کردن همه اشیای درون یک شی نمایشی

حذف کردن همه اشیای درون یک شی نمایشی

شاید برای شما هم پیش آمده باشد که بخواهید همه اشیاء درون یک MovieClip و یا کل Stage را حذف کنید ، البته انجام این کار با دانستن نام اشیاء موجود در صفحه به صورت تک تک امکان پذیر هست ولی شاید کمی دشوار باشد و در مواقعی مقدار زیادی کد نویسی و نیاز داشته باشد و وقت شما را نیز بگیرد ، برای انجام این کار به صورت سریع و حتی بدون دانستن نام اشیاء موجود می توانید از متد numChildern و removeChildAt استفاده کنیم و با به دست آوردن تعداد اشیاء و یک حلقه همه اشیاء را حذف کنیم.

function removeChildrenOf ( target:DisplayObjectContainer ):void
{
	while( target.numChildren ) {
		target.removeChildAt(0);
	}
}

در کد بالا target.numChildren می بایست حتما به عنوان مقدار مربوطه به تعداد اشیاء وارد شود زیرا در هر مرحله و با حذف شدن شی که شناسه ۰ را دارد تعداد اشیاء در شی مورد نظر ما کمتر می شود و این روند تا زمانی که هیچ شی دیگری باقی نمانده باشد ادامه می یابد.
اگر target.numChildren را در یک متغیر قرار دهید و آن را در حلقه استفاده کنید، با مشکل رو به رو می شود زیرا به روز شدن آن به متغیر اعمال نمی شود و عمل حذف به درستی انجام نمی شود.

می توانید طبق کد بالا برای خود تابعی تعریف کنید که به راحتی بتوانید اشیاء درون هر شی نمایشی را با فراخوانی آن حذف کنید.

Print Friendly
تگ ها :
پیوند مطلب قبلی
پیوند مطلب بعدی

درباره بهروز پولادرگ

متولد : ۵ مرداد سال ۱۳۶۷ ، حرفه : ادوبی فلش ، برنامه نویسی و طراحی وب ، طراحی گرافیک ، مالتی مدیا ، نرم افزار های تحت وب

23 نظر

  1. باسلام
    کتاب”مبانی طراحی بازی بافلش و اکشن۳″از نمایشگاه کتاب خریدم.
    با اینکه کدهارو عین کتاب مینوسم error میگیره!!!!
    Call to a possibly undefined method addchild؟؟؟؟؟؟
    کل پروژه رو میفرستم به ایمیلتون
    ممنون

  2. راستی آدرس ایمیلتون و پیدا نکردم!!!!!!

  3. با عرض خسته نباشید
    در اکشن ۲ وقتی با دستور netStream کار کنیم اگر از property های این دستور در در تابع on status مقدار notfound را برگرداند چیکار کنیم تا درست بشه
    من دارم یک فیلم را با این دستور پخش میکنم
    با تشکر از پیگیری شما دوست عزیز

  4. سلام بهروز جان، مطلب خوبی بود. موفق و پیروز باشید.

  5. سلام.ببخشید این هم عجله ای هست؛ ممنون
    مشکل در لود کردن ۲فایل swf در یکدیگر:
    TypeError: Error #1009: Cannot access a property or method of a null object reference.
    at Main_add/init()
    at Main_add()
    این هم کد شه:

    package 
    {
    
    	import flash.display.Loader;
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import flash.display.Sprite;
    	import flash.net.URLRequest;
    	import flash.system.*;
    
    	[SWF(width = 650,height = 500)]
    
    	public class m_load extends Sprite
    	{
    
    		public function m_load()
    		{
    			var myLoader:Loader = new Loader();
    			var url:URLRequest = new URLRequest("Add.swf");
    			myLoader.load(url);                                
    			addChild(myLoader);
    			myLoader.x =0; 
    			myLoader.y = 0;
    			                                      
    			 }
    		}
    
    	}
    
    • بعد از myLoader می باید رویدادی تعریف کنید که بعد از بارگزاری تابع ای را فراخوانی کند مثلا completeLoaded.
      کد باید چیزی شبیه به این را هم داشته باشد ، البته شاید اشتباه تایبی داشته باشم در بخش نظرات کد را نوشتم

      myLoader.addEventListener(Event.COMPLETE , completeLoaded);
      
      
      
      function completeLoaded(e:event) {
      
      var mc = e.target as MovieClip;
      addChild(mc);
      
      }
      
      

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

  6. سلام آقا بهروز خسته نباشید.
    برای حذف اشیائ در as2 از چه کدی باید استفاده کنیم؟

  7. سلام خسته نباشید
    من اکشنی میخوام برای منویی که طراحی کردم
    میخوام وقتی روی موی کلیپ کلیک میشه یه زوم اوت بشه و دوباره برگرده سرجاش
    این با چه کدی قابل تنظیمه؟

  8. سلام استاد عزیز – روزت مبارک
    میخواستم بدونم در as3 امکانش هست که تمام اشیائ داخل یک موی کلیپ به اسم mc رو به یک مکان خاص ( مثلا موقعیت x و y برای تمام اون آبجکت ها بشه ۳۳ ) انتقال داد ؟
    درواقع یه مووی کلیپ به اسم mc داریم که توش چندتا آبجک هست و بدون اینکه اسم اون آبجکت ها رو بدونیم ، اونها رو بک مکان خاص انتقال بدیم. این کار شدنی هست ؟چطور ؟
    ممنون

    • سلام و عرض ادب

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

      برای مثال این کد همه اشیاء درون myObj را در trace خروجی می دهد

       
      for (var i:int = 0; i<myObj.numChildren; i++)
      {
          trace(myObj.getChildAt(i));
      }
      

      و با این کد به شی با اندیس ۰ درسترسی داریم

       
      var myMC = myObj.getChildAt(0);
      

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

  9. سلام
    آیا میشود اطلاعات و دادهای درون یک فانکشن رو در ادوب ایر کاملا خالی کرد بگونه ای که اگر دوباره اون فانکشن فراخوانی شود دیگر اطلاعات قبلی را در خود نداشته باشد
    اگرمیشود لطفا کد مربوطه چیست؟
    ممنون

    • سلام و عرض ادب

      برای این کار راه حل اصولی این هست که یک متغییر عمومی داشته باشید و درون آن تابع یک شرط برای این که مثلا اگر آن متغیر false بود تابع return شود و ادامه کدهای درون آن اجرا نشود.
      با این که هر زمان که بخواهید می توانید جلوی عملکرد آن تابع را بگیرید.

      یا این که تابع خود را به یک متغییر نسبت دهید و زمانی که می خواهید عملکرد را نداشته باشد متغییر را به یک تابع دیگر که عملکردی ندارد تغییر دهید در این حالت تابع دوم اجرا می شود که عملکردی در آن تعریف نشده یا عملکرد دوم مورد نظر شما تعریف شده است.

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

ارسال جواب

آدرس رایانامه شما منتشر نخواهد شد.فیلد های اجباری علامت گزاری شده اند *

*

رفتن به بالای صفحه