0

ユーザーがクリックして複数の入力フィールドを追加できるアプリにボタンがあります。機能は以下。

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);
}

すべてがうまく機能し、複数の入力フィールドを追加できますが、問題は、削除ボタンをクリックすると、テキスト入力フィールドではなくボタン自体のみが削除されることです。ボタンだけが削除される理由はわかっていますが、removeChild プロセスに textinput を含める方法がわかりません。

fieldHolder のすべてのインスタンスを保持する別のスプライトを作成しようとしましたが、うまくいきませんでした。removeChildren も試しましたが、どちらもうまくいきませんでした。

ありがとう

4

1 に答える 1

0

2 つの要素をコンテナーに追加してから、それを呼び出し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();
}
于 2013-07-20T01:49:51.180 に答える