2013-07-20 2 views
0

У меня есть кнопка в приложении, которое пользователи могут щелкнуть, чтобы добавить несколько полей ввода. Функция ниже.AS3 удалить несколько дочерних объектов объекта спрайта

private var fieldHolder:Sprite = new Sprite(); 

private function addInviteFriend(event:starling.events.Event):void 
{ 
    this.newFriendInvite = new TextInput(); 
    this.newFriendInvite.backgroundSkin = new Quad(Constants.STAGE_WIDTH - 80, 30, 0xd0d0d1); 
    this.newFriendInvite.width = Constants.STAGE_WIDTH - 110; 
    this.newFriendInvite.height = 30; 
    this.newFriendInvite.text = ""; 
    this.fieldHolder.addChild(this.newFriendInvite); 
    this.newFriendInvite.x = 0; 
    this.newFriendInvite.y = this.fieldHolder.height; 

    this.removeInvitedFriend = new Button(); 
    this.removeInvitedFriend.defaultSkin = new Image(Assets.getAtlasTexture("btn-delete")); 
    this.fieldHolder.addChild(this.removeInvitedFriend); 
    this.removeInvitedFriend.x = int((this.newFriendInvite.x + this.newFriendInvite.width) - this.newFriendInvite.defaultSkin.width); 
    this.removeInvitedFriend.y = int(this.newFriendInvite.y); 
    this.removeInvitedFriend.addEventListener(starling.events.Event.TRIGGERED, removeInviteFriendClick); 

    this.addInviteFriendButton.y = this.fieldHolder.y + this.fieldHolder.height + 30 + 1; 
} 

private function removeInviteFriendClick(event:starling.events.Event):void 
{ 
    var child:Sprite = event.currentTarget as Sprite;  
    this.fieldHolder.removeChild(child); 
} 

Все прекрасно работает, я могу добавить несколько полей ввода, однако проблема заключается в том, что при нажатии на кнопку Удалить только сама кнопка удаляется, а не поле TextInput. Я знаю, почему удаляется только кнопка, но я не знаю, как включить textinput в процесс removeChild.

Я попытался создать еще один спрайт, чтобы держать все экземпляры fieldHolder, но это не сработало. Я также попробовал removeChildren, но это тоже не сработало.

Благодаря

+0

Что происходит, когда вы вызываете 'this.fiedHolder.removeChildren();' в 'removeInviteFriendClick', дети не удаляются? –

+0

Удаляет все кнопки ввода и удаления, а не только «группу», на которую было нажата – puks1978

+0

Проверьте мой ответ. –

ответ

0

Попробуйте добавить два элемента в контейнер, а затем вызвать removeChildren по этому поводу?

private var fieldHolder:Sprite = new Sprite(); 

private function addInviteFriend(event:starling.events.Event):void 
{ 
    var container:Sprite = new Sprite(); 

    this.newFriendInvite = new TextInput(); 
    this.newFriendInvite.backgroundSkin = new Quad(Constants.STAGE_WIDTH - 80, 30, 0xd0d0d1); 
    this.newFriendInvite.width = Constants.STAGE_WIDTH - 110; 
    this.newFriendInvite.height = 30; 
    this.newFriendInvite.text = ""; 
    this.newFriendInvite.x = 0; 
    this.newFriendInvite.y = this.fieldHolder.height; 
    container.addChild(this.newFriendInvite); 

    this.removeInvitedFriend = new Button(); 
    this.removeInvitedFriend.defaultSkin = new Image(Assets.getAtlasTexture("btn-delete")); 
    this.removeInvitedFriend.x = int((this.newFriendInvite.x + this.newFriendInvite.width) - this.newFriendInvite.defaultSkin.width); 
    this.removeInvitedFriend.y = int(this.newFriendInvite.y); 
    this.removeInvitedFriend.addEventListener(starling.events.Event.TRIGGERED, removeInviteFriendClick); 
    container.addChild(this.removeInvitedFriend); 

    this.addInviteFriendButton.y = this.fieldHolder.y + this.fieldHolder.height + 30 + 1; 

    this.fieldHolder.addChild(container); 
} 

private function removeInviteFriendClick(event:starling.events.Event):void 
{ 
    var child:Sprite = event.currentTarget as Sprite;  
    child.parent.removeChildren(); 
} 
+0

Это отлично работает. Спасибо – puks1978

+0

Добро пожаловать! –

Смежные вопросы