投稿で配列が間違って作成されました。これを試して:
var days:Array = ["mon", "tues", "wed", "thurs", "fri"];
または、Arrayクラスのpush()メソッドを使用して、次のように作成することもできます。
var days:Array = new Array();
days.push( 'mon');
days.push( 'tues');
days.push( 'weds');
days.push( 'thurs');
days.push( 'fri');
投稿内の配列の値をトレースするには:
trace( days[0] ); // returns "mon"
trace( days[1] ); // returns "tues"
trace( days[2] ); // returns "wed"
trace( days[3] ); // returns "thurs"
trace( days[4] ); // returns "fri"
配列の内容は、配列の「インデックス」に格納されます。配列のインデックスは常に0で始まります。
配列には長さがあります。空の配列の長さは0です。配列に少なくとも1つのアイテムが含まれている場合、長さは1であり、アイテムを追加すると長くなります。配列をループして値を取得するには、次のようにします。
for(var i:int = 0; i < days.length; i++)
{
trace( days[i] );
}
配列は、あらゆるプログラミング言語の強力で不可欠な部分です。配列からアイテムを削除したり、アイテムを追加したり、特定のインデックスで特定のアイテムを削除したり、名前でアイテムを削除したり、配列を組み合わせたりすることができます。このリンクを見て、Arrayクラスのプロパティとメソッドを調べると便利です。配列を操作する方法のコツをつかんだら、配列なしでどのように存在していたかはわかりません。
ボタンを特定の配列インデックスに関連付ける方法はたくさんあります。Dr.Denis McCracleJizzが提供する答えは一方向ですが、AS3に慣れていない場合は、まだなじみのないいくつかの概念を使用しているため、少し圧倒されるかもしれません。コードを少し長くしますが、少し単純化できるかどうかを見てみましょう。
mondayButton.addEventListener( MouseEvent.CLICK, onClickDayButton );
tuesdayButton.addEventListener( MouseEvent.CLICK, onClickDayButton );
function onClickDayButton( e:MouseEvent ):void
{
if( e.target.name == 'mondayButton')
{
trace( days[0] );
}
else if( e.target.name == 'tuesdayButton')
{
trace( days [1] );
}
// and so on...
}
オブジェクトに精通している場合は、ボタンとボタンIDの両方を保持するボタンごとにオブジェクトを作成し、それらを配列に格納できます。
var days:Array = ["mon", "tues", "wed", "thurs", "fri"];
var dayButtonArray:Array = new Array();
var mondayButtonObject:Object = new Object();
mondayButtonObject.button = mondayButton;
mondayButtonObject.id = 0;
dayButtonArray.push( mondayButtonObject );
var tuesdayButtonObject:Object = new Object();
tuesdayButtonObject.button = tuesdayButton;
tuesdayButtonObject.id = 1;
dayButtonArray.push( tuesdayButtonObject );
// and like above, the rest of the days here
// then loop through them and set the mouseEvent
for(var i:int = 0; i < dayButtonArray.length; i++)
{
dayButtonArray[i].button.addEventListener( MoouseEvent.CLICK, onClickDayButton );
}
// and the function each button calls to
function onClickDayButton( e:MouseEvent ):void
{
trace( days[ evt.target.id ] );
}
上記のオブジェクトメソッドをさらに単純化するには、days配列を完全にスキップし、ボタンに関連付けられた日をidの代わりにdayButtonArrayに追加します。
var dayButtonArray:Array = new Array();
var mondayButtonObject:Object = new Object();
mondayButtonObject.button = mondayButton;
mondayButtonObject.day = "monday";
dayButtonArray.push( mondayButtonObject );
var tuesdayButtonObject:Object = new Object();
tuesdayButtonObject.button = tuesdayButton;
tuesdayButtonObject.day = "tuesday";
dayButtonArray.push( tuesdayButtonObject );
// and like above, the rest of the days here
// then loop through them and set the mouseEvent
for(var i:int = 0; i < dayButtonArray.length; i++)
{
dayButtonArray[i].button.addEventListener( MoouseEvent.CLICK, onClickDayButton );
}
// and the function each button calls to
function onClickDayButton( e:MouseEvent ):void
{
trace( evt.target.day );
}
今では、Dr.DenisMcCracleJizzの答えと同じくらい複雑になっています。彼も一見の価値があります。