Hatena::Groupactionscript

ConquestArrow.addEventListener();

2007-07-04

[][]いくつあるかわからない複数の数の最大値・最小値をMath.max()/Math.min()で求める方法 23:53 はてなブックマーク - いくつあるかわからない複数の数の最大値・最小値をMath.max()/Math.min()で求める方法 - ConquestArrow.addEventListener();

複数の数値の最大値・最小値を求めるには、Math.max()/Math.min()を使う。

var a:uint = 10;
var b:uint = 20;

trace("max",Math.max(a, b));	//max 20
trace("min",Math.min(a, b))l	//min 10

AS3では、Math.max()/Math.min()引数は可変長引数*1なので、2つ以上の数を比較することもできる。

trace("max",Math.max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10));	//max 10

3つ以上の数を比較できるのはなかなか便利なのだが、比較したい数の項目数がいくつあるかわからない時には使えない。

var a:Array = new Array();
for(var i:uint=0; i<someItemsLength; i++){
	a[i] = procItem(i);	//項目数が不定の配列
}

//配列aの項目の値の中で最大値を求めたい
Math.max(a[0], a[1], a[2], a[3], …);	//いくつあるか分からないので引数に渡せない

また、比較したい数の項目数が分かっていたとしても、項目数が多い場合にいちいち記述するのは面倒だ。

//100ある数のうち最大値を求めたい
Math.max(a, b, c, d, e, f, g, h, …	//全部書くの??

しょうがないので、配列を受け取って最大値・最小値を求める独自の関数を作ったりするのだが、やっぱりネイティブのAPIを使いたいもの。実は、次の方法で可能。

//任意の長さの配列
var a:Array = new Array();

Math.max.apply(null, a);	//配列aの項目の中での最大値が求められる

Function.apply()を使うのが肝。Function.apply()Function.call()とはことなり、第二引数は配列である。なので、Math.max()/Math.min()のように可変長引数の関数に、配列の中身を引数として渡すことが可能になる。

基本といえば基本なのだが、うっかり忘れがちなのでメモ。

[]TextFieldtextInputイベントではバックスペースの入力を受け取れない 03:10 はてなブックマーク - TextFieldのtextInputイベントではバックスペースの入力を受け取れない - ConquestArrow.addEventListener();

WIN 9,0,45,0 debugで確認。textInputは文字の入力は受け取っても、文字の削除のキー入力は受け取らないらしい。

バックスペースを受け取るには、changeイベントの方で。


var tf:TextField = new TextField();
tf.addEventListener(
	TextEvent.TEXT_INPUT,	//こっちはBSを受け取れない
	function(e:TextEvent):void{}
);
tf.addEventListener(
	Event.CHANGE,	//こっちは受け取れる
	function(e:Event):void{}
);

*1:いわゆる、「...rest」

FarazFaraz2015/09/30 16:42So much info in so few words. Tolosty could learn a lot.

NaTaliaNaTalia2015/10/09 07:36You get a lot of respect from me for writing these helpful <a href="http://ugheifvi.com">arcleits.</a>

HeldaHelda2015/10/09 11:59What a plauesre to find someone who thinks through the issues http://grxrdvb.com [url=http://virdwla.com]virdwla[/url] [link=http://gtdprbx.com]gtdprbx[/link]

StarlyStarly2015/10/10 06:42It was dark when I woke. This is a ray of <a href="http://uuozdfvm.com">sunishne.</a>

YoshieYoshie2015/10/12 07:12I could watch Scniedlhr's List and still be happy after reading this. http://ewlkhoqb.com [url=http://zzopexb.com]zzopexb[/url] [link=http://gtcsgj.com]gtcsgj[/link]