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

Posted

技术标签:

【中文标题】仅接受给定类型的 AS3 动态类【英文标题】:AS3 Dynamic class that only accepts a given type 【发布时间】:2011-10-29 12:04:11 【问题描述】:

是否可以让 AS3 中的 dynamic 类只接受给定类型的动态创建的属性?

例如,我可能只希望允许精灵。因此,以这个快速示例类为例:

public dynamic class Test extends Object

-------

还有几行简短的文字可以理解我的意思:

var test:Test = new Test();

test.something = 32; // error
test.something = "party hats"; // error
test.something = new Sprte(); // works

也许使用代理类/命名空间有一种方法可以在动态创建变量时操纵运行的任何内容?

【问题讨论】:

【参考方案1】:

测试类:

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;
        
    

应用程序:

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);
        
    

输出:

Error: No Sprite given: 32
[object Sprite]

【讨论】:

你打败了我!不错的答案:) 太棒了,知道它是这样的。干杯! APIDoc 总是很有帮助:help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/… 奇怪的是 flash_proxy 命名空间及其位置仅在 Proxy 类文档的示例中提及。由于它是必需的,我有点惊讶它没有列在 flash.utils 包的自己的命名空间类别(如函数、接口和类)下。

以上是关于仅接受给定类型的 AS3 动态类的主要内容,如果未能解决你的问题,请参考以下文章

如何定义 Typescript 部分类型以仅接受属性

仅将 java 类实例转换为原始类型

AS3,如何仅显示最后一行动态文本(以及更多)?

如何检查给定的“方法”对象是不是接受 Julia 0.6 中给定的类型的“元组”?

仅接受浮点数或整数的 Html 输入类型 [重复]

接受任意类型的回调