سوال در مورد 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 ای است که تابع از بیرون اونو دریافت میکنه.
 

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

بالا