関数を中断したい
ゲームのAIを作りたいのですが、制限時間があるとします。
選択時間内に_thinkが終わらなかった場合
とりあえずその時点でのselectionが参照されるようになっていますが、
もう考え続けないでいいのに考え続けてしまいます。
40行目の位置から_think関数を止めたいのですが、可能でしょうか?
♥0 |
Line 39 |
Modified 2010-06-24 16:56:44 |
MIT License
archived:2017-03-10 17:47:11
ActionScript3 source code
/**
* Copyright enecre ( http://wonderfl.net/user/enecre )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/4N8L
*/
/*
ゲームのAIを作りたいのですが、制限時間があるとします。
選択時間内に_thinkが終わらなかった場合
とりあえずその時点でのselectionが参照されるようになっていますが、
もう考え続けないでいいのに考え続けてしまいます。
40行目の位置から_think関数を止めたいのですが、可能でしょうか?
*/
package {
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
// write as3 code here..
var tf:TextField = new TextField();
addChild(tf);
var moja:Ai = new Ai();
moja.addEventListener("complete",function():void{
tf.text = String(moja.selection);
});
moja.think();
}
}
}
import flash.events.EventDispatcher;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;
class Ai extends EventDispatcher{
private var _timer:Timer;
private var _selection:int;
public function get selection():int{return _selection;}
function Ai(){}
public function think():void{
_timer = new Timer(5000,1);
_timer.addEventListener(TimerEvent.TIMER,function():void{
dispatchEvent(new Event("complete"));
// ここで_think関数を止めたい
});
_timer.start();
_think();
}
private function _think():void{
/*
ここで考える、時間がかかるかもしれない
*/
_selection = 3;
_timer.stop();
dispatchEvent(new Event("complete"));
}
}