Home > Archives > 2009-01

2009-01

LoopNumber

こんなClassを書いてみた。

package
{
 
	public class LoopNumber {
 
		// LoopNumber
		public function get loop():Number { return _loop; }
		private var _loop:Number;
 
		// AddNumber
		public function get addval():Number { return _addval; }
		private var _addval:Number;
 
		// カウント変数
		public function get now():Number { return _now; }
		private var _now:Number;
 
		// カウント前の変数
		public function get prev():Number { return _prev; }
		private var _prev:Number;
 
		// カウント後の変数
		public function get next():Number { return counter(_now); }
		private var _next:Number;
 
		private var _start:Number;
 
		/* --------------------------------------------------------------------------- */
		// コンストラクタ
		/* --------------------------------------------------------------------------- */
		public function LoopNumber ( value:Number, loop:Number, addval:Number ) {
			_start = value;
			_now = value;
			_loop = loop;
			_addval = addval;
		}
 
		/* --------------------------------------------------------------------------- */
		// カウントアップ
		/* --------------------------------------------------------------------------- */
		public function count():Number {
			_prev = _now;
			_now = counter(_now);
			return _now;
		}
		/* --------------------------------------------------------------------------- */
 
		/* --------------------------------------------------------------------------- */
		private function counter ( value:Number ):Number {
			return ((loop - value) != 0) ? value + _addval : _start;
		}
		/* --------------------------------------------------------------------------- */
 
	}
}

使い方はこんな感じ

var ln:LoopNumber;
 
//0から2まで1づつカウントアップ
ln = new LoopNumber(0, 2, 1);
trace(ln.prev, ln.next, ln.now, ln.count());// NaN, 1, 0, 1
trace(ln.prev, ln.next, ln.now, ln.count());// 0, 2, 1, 2
trace(ln.prev, ln.next, ln.now, ln.count());// 1, 0, 2, 0
 
//2から0まで1づつカウントダウン
ln = new LoopNumber(2, 0, -1);
trace(ln.prev, ln.next, ln.now, ln.count());// NaN, 1, 2, 1
trace(ln.prev, ln.next, ln.now, ln.count());// 2, 0, 1, 0
trace(ln.prev, ln.next, ln.now, ln.count());// 1, 2, 0, 2

カウンタの前後の値も取れます。

下の様なカウンタをクリアさせるif文から解放されて、ちょっとだけソースがキレイになったw

if(count < countMax) {
	count += 1;
} else {
	count = 0;
}

こういう単機能のClassを充実させていきたいなー

Home > Archives > 2009-01

Search
Feeds
Meta
Link
写真素材 ストックフォトの定額制ペイレスイメージズ

Return to page top