AS3仅接受给定类型的动态类

Mar*_*rty 3 actionscript dynamic actionscript-3

是否可以使dynamicAS3中的类只接受动态创建的属性(如果它们是给定类型)?

例如,我可能只想要允许精灵.所以请看这个快速示例类:

public dynamic class Test extends Object{}
Run Code Online (Sandbox Code Playgroud)

-------

并快速了解一下我的意思:

var test:Test = new Test();

test.something = 32; // error
test.something = "party hats"; // error
test.something = new Sprte(); // works
Run Code Online (Sandbox Code Playgroud)

也许使用代理类/ namespsace有一种方法来操纵动态创建变量时运行的任何东西?

Kak*_*Bok 10

测试类:

package classes {
    import flash.display.Sprite;
    import flash.utils.Proxy;
    import flash.utils.flash_proxy;

    public dynamic class Test extends Proxy {
        private var _properties : Object;

        public function Test() {
            _properties = new Object();
        }

        override flash_proxy function getProperty(name : *) : * {
            return _properties[name];
        }

        override flash_proxy function setProperty(name:*, value:*):void {
            if (!(value is Sprite)) throw new Error("No Sprite given: " + value);       
            _properties[name] = value;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

该应用程序:

package classes {
    import flash.display.Sprite;

    public class TestTest extends Sprite {
        public function TestTest() {
            var test:Test = new Test();

            try {
                test.something = 32; // error
            } catch (e : Error) {
                trace (e);
            }

            try {
                test.something = new Sprite(); // works
            } catch (e : Error) {
                trace (e);
            }

            trace (test.something);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Error: No Sprite given: 32
[object Sprite]
Run Code Online (Sandbox Code Playgroud)