То, что я в основном пытаюсь создать динамически в классе после создания экземпляра класса ... Я действительно не знаю, можно ли достичь этого в as3 ... вот несколько примеров:Динамически создавать функцию в классе as3
var mc:SomeClass = new SomeClass();
mc["myMethod"] = function():void {};
или
public function SomeClass()
{
}
public function addMethod(methName:String, func:Function):void
{
pushMeth(func);
this[methName] = getMeth();
}
обоих примерах одинаковы ...
mc["myMethod"] = function():void {};
или
this[methName] = getMeth();
бросает:
ReferenceError: Error # 1056: Не удается создать свойство MyMethod на SomeClass
так что вы можете дать свои какие-либо предложения, как я могу добиться этого или что проблема в моем коде, или может Я вообще достигаю этого эффекта?
EDIT !!!
полный рабочий код @null
public dynamic class OverloadExample
{
private var _meths:Object = {};
public function OverloadExample()
{
}
public function addMethod(methName:String, func:Function):void
{
pushMeth(func);
this[methName] = getMeth;
}
private function pushMeth(func:Function):void
{
_meths[func.length] = func;
}
private function getMeth(...args):void
{
var l:int = args.length;
if (_meths[l]) {
_meths[l].apply(this,args);
}
}
}
var o:OverloadExample = new OverloadExample();
o.addMethod("mm", function(a:int):void { trace("one"); });
o.addMethod("mm", function(a:int,b:int):void { trace("two"); });
o.mm(1);
o.mm(2,3);
Примечание: это просто пример того, как достичь эффекта перегрузки ...
Теперь я» m пытается использовать addMethod две или более функции с одинаковым количеством аргументов, но эти аргументы могут быть разных типов, и у меня есть некоторые улучшения ...
Это в основном способ сделать вещи очень непрозрачными и сложными для отладки. Вы не создаете динамических методов, а просто добавляете ссылку на существующие. Вы также не предоставляете никаких функций перегрузки, как вы утверждаете. В конце концов, единственная функциональность, которую вы достигаете, - это свободные методы класса, которые могут избежать полной проверки времени компиляции. – BotMaster