diff --git a/Source/Listener.as b/Source/Listener.as index 4b2ccef..9b13e84 100644 --- a/Source/Listener.as +++ b/Source/Listener.as @@ -1,23 +1,28 @@ class Listener { - static function helloWorld() { - trace("Hello, world!"); - } - static function mkListenerHandler(obj: MovieClip) { - obj.listeners = new Array() - obj.mkListener = function(listener: Function) { - obj.listeners.push(listener) + static function mkListenerHandler(obj: MovieClip, types: Array) { + Utils.debug(arguments) + /* Utils.debug("Listener::mkListenerHandler", "obj = " + obj._name + "; types = " + types) */ + obj.mkListener = function(type: String, listener: Function) { + Utils.assertDefined(obj, type + "Listeners") + obj[type + "Listeners"].push(listener) } - obj.onEnterFrame = function() { - for (var i in obj.listeners) - obj.listeners[i](obj) + + for (var i in types) { + var type = types[i] + obj[type + "Listeners"] = new Array() + obj[type] = function() { + for (var j in obj[type + "Listeners"]) + obj[type + "Listeners"][j](obj) + } } } static function spinRight(mc: MovieClip) { mc._rotation++ } static function main() { - mkListenerHandler(_root.b) + Utils.debug(arguments) + mkListenerHandler(_root.b, new Array("onEnterFrame")) - _root.b.mkListener(spinRight) + _root.b.mkListener("onEnterFrame", spinRight) } } diff --git a/Source/Prototype.fla b/Source/Prototype.fla index eed568a..6b56b86 100644 Binary files a/Source/Prototype.fla and b/Source/Prototype.fla differ diff --git a/Source/State.as b/Source/State.as deleted file mode 100644 index bce056d..0000000 --- a/Source/State.as +++ /dev/null @@ -1,20 +0,0 @@ -class State { - static function run() { - _root.createEmptyMovieClip("target_mc", _root.getNextHighestDepth()); - loadVariables("params.txt", _root.target_mc); - function checkParamsLoaded() { - if (_root.target_mc.done == undefined) { - trace("not yet."); - } else { - trace("finished loading. killing interval."); - trace("-------------"); - for (var i in _root.target_mc) { - trace(i+": "+_root.target_mc[i]); - } - trace("-------------"); - clearInterval(param_interval); - } - } - var param_interval: Number = setInterval(checkParamsLoaded, 100); - } -} diff --git a/Source/Unit.as b/Source/Unit.as new file mode 100644 index 0000000..95ba794 --- /dev/null +++ b/Source/Unit.as @@ -0,0 +1,10 @@ +class Unit { + static function init(obj: Object) { + obj.ini = 0 + obj.end = 5 + obj.poi = 0 + obj.ddg = 0 + obj.att = 0 + obj.def = 0 + } +} diff --git a/Source/Utils.as b/Source/Utils.as new file mode 100644 index 0000000..844cf16 --- /dev/null +++ b/Source/Utils.as @@ -0,0 +1,54 @@ +class Utils { + static function assert(bool: Boolean) { + if (bool) + return + error("Assert failed in " + nameOf(arguments.caller) + "!") + } + static function assertDefined(obj: Object, member: String) { + if (eval(String(obj) + "." + member) != undefined) + return + error("Assert failed in " + nameOf(arguments.caller) + " " + member + "is not member of " + obj._name + "!") + } + static function valueOr(maybeValue, defaultValue) { + return maybeValue == undefined ? defaultValue : maybeValue + } + static function debug(args: Object, msg) { + trace(nameOf(args.callee) + ": " + args + " " + valueOr(msg, "")) + } + static function warning(msg: String) { + trace("ERROR: " + msg) + } + static function error(msg: String) { + trace("ERROR: " + msg) + } + static var functionNameContexts = new Array( + Listener, Utils) + static function nameOf(func:Function): String { + for (var i in functionNameContexts) { + var obj: Function = functionNameContexts[i] + for (var prop in obj) { + if (functionNameContexts[i][prop] == func) + return prop; + } + } + return "anonymous function"; + } + /* static function run() { + _root.createEmptyMovieClip("target_mc", _root.getNextHighestDepth()); + loadVariables("params.txt", _root.target_mc); + function checkParamsLoaded() { + if (_root.target_mc.done == undefined) { + trace("not yet."); + } else { + trace("finished loading. killing interval."); + trace("-------------"); + for (var i in _root.target_mc) { + trace(i+": "+_root.target_mc[i]); + } + trace("-------------"); + clearInterval(param_interval); + } + } + var param_interval: Number = setInterval(checkParamsLoaded, 100); + } */ +}