DaVikingCode / Citrus-Engine

Modern AS3 Game Engine
http://citrusengine.com/
Other
549 stars 231 forks source link

Might be worth testing ( simpler/safer initialisation of parameters ) ? #286

Open Snky opened 8 years ago

Snky commented 8 years ago
    /**
     * Hello guys! This works fine for me, even for the booleans,
     * not sure if there was a special reason for setting booleans manually
     * No errors can be thrown now, if the property doesn't exist on the object
     * thanks to the "in" bit, works better than hasOwnProperty(param)
     */
    public function setParams(object : Object, params : Object) : void {
        var param : String;
        for (param in params) {
            if (param in object) object[param] = params[param];
        }
    }

    /**
     * The initialize method usually calls this.
     */
    public function setParams(object : Object, params : Object) : void {
        for (var param : String in params) {
            try {
                if (params[param] == "true")
                    object[param] = true;
                else if (params[param] == "false")
                    object[param] = false;
                else
                    object[param] = params[param];
            } catch (e : Error) {
                if (!hideParamWarnings)
                    trace("Warning: " + e.message + " " + this);
            }
        }
    }
Snky commented 8 years ago

Well, either way, if there are good reasons for the way it's implemented, I think the "(param in object)" bit will help, you can throw thousands of parameters at the object then, and it will just ignore those properties if they are not present in that class.

-edit- After further testing, it does not seem to pick up all the variables within a class, probably unstable then.