0

ユーザーが項目をクリック (MOUSE_DOWN) すると、項目の右側に「削除」アイコンが表示されるスクロール リストがあります。

私のスクロール リストのコードは次のとおりです。

private function dataLoaded(event:Event):void {
            // this holds the loaded xml data //
            data = new XML(event.target.data);
            //items properties call - add other calls to master properties later on//
            items = data.item;
            // parsing of each ingredient//
            for (var i = 0; i < items.length(); i++) {
                // instantiation of mcItem (the stage for each item)
                _item = new Item();
                // sets //over// layer to invisible / transparent //
                _item.item_btn_over.alpha = 0;
                // creates the var itemTextField //
                _itemTextField = new TextField();
                // _itemTextField visual attributes //
                _itemTextField.x = _textFieldXPosition + _textFieldPaddingLeft;
                _itemTextField.y = _textFieldYPosition;
                _itemTextField.selectable = true;
                _itemTextField.wordWrap = true;
                _itemTextField.width = _textFieldWidth;
                _itemTextField.height = _textFieldHeight;
                _itemTextField.embedFonts = true;
                _defaultFormat.color = 0x111112;
                _defaultFormat.font = _arialRounded.fontName;
                _defaultFormat.size = 18;
                _itemTextField.defaultTextFormat = _defaultFormat;
                _itemTextField.text = items[i].toString();
                //adds textfield to displaylist//
                _item.addChild(_itemTextField);
                //vertical positioning//
                _item.y = i * _itemPosition;
                _item.buttonMode = true;
                _item.mouseChildren = false;
                //adds items to container displaylist//
                _container.addChild(_item);
                _item.addEventListener(MouseEvent.MOUSE_DOWN, itemClicked);
            }

                // Input Mask//
                _mask = new Shape();
                _mask.graphics.beginFill(0xFF0000);
                _mask.graphics.drawRect(0, 0, _maskWidth, _maskHeight);
                _mask.graphics.endFill();
                // Positioning of input mask//
                // horizontal centering of input mask//
                _mask.x = stage.stageWidth / 2 - _container.width / 2;
                _mask.y = _paddingTop;
                // adds the mask onto the stage//
                addChild(_mask);
                // assigns the above mask to the container //
                _container.mask = _mask;
                // Positioning of container with the mask//
                // horizontal centering of container //
                _container.x = stage.stageWidth / 2 - _container.width / 2;
                // vertical position of container //
                _container.y = _paddingTop;

                //Container background stylings//
                _background = new Shape();
                _background.graphics.beginFill(0xFFFFFF);
                _background.graphics.drawRect(0, 0, _container.width, _container.height);
                _background.graphics.endFill();
                _container.addChildAt(_background, 0);
                //End of container background stylings//

                _container.addEventListener(MouseEvent.MOUSE_OVER, movingOver);
                _container.addEventListener(MouseEvent.MOUSE_OUT, movingOut);
            }

MOUSE_DOWN イベントをリッスンする別のリスナー関数があります。これについて助けが必要です。どの項目がクリックされたかを評価し、AS3 リンケージ名が DeleteItem である SimpleButton を表示し、その特定の項目に対して相対的に配置する方法を知る必要があります。

function itemClicked(event:MouseEvent):void {
    _itemTextField = new TextField();
    trace(_itemTextField.text);
    _editItem = new DeleteItem();
    addChild(_editItem);
    _editItem.x = ?????;

}
4

1 に答える 1

0

event.tagret を使用します - イベントがディスパッチされたオブジェクトへの参照があります (あなたの場合はクリックされた項目)

var item:Item = event.target as Item;

何かを削除したい場合は、それへのすべての参照を削除します。ステージ上にある場合は、parent.removeChild(this) を使用します。表示オブジェクトを非表示にするだけの場合は、visible=false の使用を検討してください。

item.getChildAt(INDEX);
于 2013-04-19T13:34:22.037 に答える