0

モバイル デバイス用に構築された AS3/Air アプリに textinput フィールドを動的に追加する方法はありますか?

ユーザーが情報 (名前、住所、生年月日など) を入力する必要があるフォームがあり、ユーザーが連絡先番号を入力するセクションがあります。連絡先番号を無制限に追加できる機能が欲しいです。これを行うために、「番号を追加」ボタンがあります。ユーザーがこれをクリックすると、画面のリストの一番下に新しい textinput が 1 つ追加されます。

ガイダンスやコードサンプルをいただければ幸いです。

4

1 に答える 1

0

暇だったのでデモを作ってみました。以下のリンクをチェックしてください。

デモ: http://ronnieswietek.com/_random/phone_nums.swf

ソース: http://ronnieswietek.com/_random/phone_nums.fla

以下のコードは少し肥大化しているかもしれませんが、これはデモ用です

import flash.events.MouseEvent;
import fl.controls.TextInput;
import flash.display.Sprite;

var lastY:Number = origPhoneField.y;
var fieldHolder:Sprite = new Sprite();
fieldHolder.x = origPhoneField.x;
fieldHolder.y = origPhoneField.y + 35;
addChild(fieldHolder);

function addPhoneField(e:MouseEvent):void
{
    //-- clicking the plus icon will add a new custom text input
    //-- its only custom because I added a minus button to it
    var newInput:CustomTextInput = new CustomTextInput();
    newInput.y = (fieldHolder.numChildren > 0) ? fieldHolder.height + 5 : 0;
    fieldHolder.addChild(newInput);
    newInput.minusBtn.addEventListener(MouseEvent.CLICK, removePhoneField);
}
addBtn.addEventListener(MouseEvent.CLICK, addPhoneField);

function removePhoneField(e:MouseEvent):void
{
    //-- clicking the minus will remove the movie clip and reposition the other fields vertically
    fieldHolder.removeChild(e.target.parent);
    for (var i:int = 0; i < fieldHolder.numChildren; i++)
    {
        var target = fieldHolder.getChildAt(i);
        target.y = (i * 35);
    }
}

function showNumbers(e:MouseEvent):void
{
    //-- for demo purposes, this will output all the values
    outputWin.text += origPhoneField.text + "\n";
    for (var i:int = 0; i < fieldHolder.numChildren; i++)
    {
        var target = fieldHolder.getChildAt(i);
        outputWin.text += target.theField.text + "\n";
    }
    outputWin.text += "================\n";
}
showNums.addEventListener(MouseEvent.CLICK, showNumbers);
于 2013-06-13T23:48:53.403 に答える