gpt4 book ai didi

actionscript-3 - 仅接受给定类型的 AS3 动态类

转载 作者:行者123 更新时间:2023-12-01 08:38:14 30 4
gpt4 key购买 nike

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

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

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

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

最佳答案

测试类:

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]

关于actionscript-3 - 仅接受给定类型的 AS3 动态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7103028/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com