سوال در مورد Child

آقا من يک موي کليپ به نام but1 درست کردم و در قسمت Linkage اون براي کلاسش اسم butn1 رو گذاشتم .

و داخل اون موي کليپ يک سري متن نوشتم و يک دکمه هم به نام btny گذاشتم .

اين تا اينجا ، که موي کليپ رو ساختم .

حالا من داخل Stage ام يک دکمه به نام btn1 گذاشتم و با کد زير موي کليپ but1 ي که ساختم رو به Stage اضافه کردم :

کد:
btn1.addEventListener(MouseEvent.CLICK , _btn1);
function _btn1 (evt:MouseEvent):void
{
 var but1:MovieClip=new butn1();
 addChild(but1);
}

تا اينجاي کار اشکالي ندارم . حالا مي خواستم يک کاري بکنم که اگر داخل اون موي کليپ که الان رو Stage اومده روي دکمه btny که داخلش بود کليک شد ، اين موي کليپ که با addCilde(but1) اضافه کردم حذف بشه .

اميدوارم متوجه شده باشيد .

من اين کد رو هم نوشتم ارور مي ده :

کد:
btn1.addEventListener(MouseEvent.CLICK , _btn1);
function _btn1 (evt:MouseEvent):void
{
 var but1:MovieClip=new butn1();
 addChild(but1);
 but1.btny.addEventListener(MouseEvent.CLICK , _btn1_1);
}
function _btn1_1 (evt:MouseEvent):void
{
 removeChildAt(0);
}

لطفا کمک نمائيد.
 

mohammadfard

کاربر فعال
با سلام

دوست عزیزم
اول اینکه: دستور (removeChildAt(0 شما همون مووی btn1 شما رو پاک می کنه چون در حال حاضر فقط همین یک مووی رو روی Stage داری پس حتما Index ش 0 هستش.

numChildren در حال حاضر 1
وقتی butn1 رو addChild می کنی حالا iindex ش می شه 1 پس باید به جای دستور بالا بنویسی (removeChildAt(1
numChildren برابر با 2 شد


دوم : هیچوقت نباید به این صورت مووی خودت رو حذف کنی امکان داری که تداخلی بوجود بیاد این دستور رو امتحان کن

function _btn1_1 (evt:MouseEvent):void {
var m:MovieClip = evt.currentTarget as MovieClip;

removeChild(m.parent);

}


یا علی
 
آخرین ویرایش:
آقا واقعا از لطفتون ممنونم .

اگه ميشه يک کم در مورد کد توضيح بديد که من ياد بگيرم . ممنون .

evt.currentTarget چيکار ميکنه ؟
 
اگه ميشه يک کم در مورد کد توضيح بديد که من ياد بگيرم . ممنون .

evt.currentTarget چيکار ميکنه ؟


در واقع این دستور به مووی کلیپی که رخداد(Event) روی اون صورت گرفته اشاره می کنه.رخداد هم که اینجا همون MouseEvent ای است که تابع از بیرون اونو دریافت میکنه.
 
بالا