CODEONWORT

간단한 작업 큐 본문

Season 1/플래시

간단한 작업 큐

codeonwort 2012.06.20 14:54

package {

import flash.utils.setTimeout

public class TaskQueue {

private var _cmds:Array = []

public function execute(func:Function, ...args):void {

_cmds.push( {type:"execute", func:func, args:args} )

}

public function setprop(obj:Object, prop:String, val:Object):void {

_cmds.push( {type:"setprop", obj:obj, prop:prop, val:val} )

}

public function wait(amount:uint):void {

_cmds.push( {type:"wait", amount:amount} )

}

public function run():void {

var cmd:Object

while(_cmds.length){

cmd = _cmds.shift()

if(cmd.type == "execute"){

cmd.func.apply(cmd.func, cmd.args)

}else if(cmd.type == "setprop"){

cmd.obj[cmd.prop] = cmd.val

}else if(cmd.type == "wait"){

setTimeout(run, cmd.amount)

break

}

}

}


}

}


타 언어의 sleep() 기능이 필요해서 만든 클래스. execute(), setprop(), wait()로 작업 수행 순서를 정하고 마지막에 run()을 호출한다. 객체를 일회용으로 썼기 때문에 run()을 여러 번 호출하는 경우는 방지하지 않았다.

0 Comments
댓글쓰기 폼