Actionscript 3 仅接受给定类型的AS3动态类
AS3中的Actionscript 3 仅接受给定类型的AS3动态类,actionscript-3,actionscript,dynamic,Actionscript 3,Actionscript,Dynamic,AS3中的动态类是否可以仅接受动态创建的属性(如果它们是给定类型) 例如,我可能只希望允许使用精灵。以这个简单的示例类为例: public dynamic class Test extends Object{} ------- 还有几句简短的话让你明白我的意思: var test:Test = new Test(); test.something = 32; // error test.something = "party hats"; // error test.something = n
动态
类是否可以仅接受动态创建的属性(如果它们是给定类型)
例如,我可能只希望允许使用精灵。以这个简单的示例类为例:
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]
你赢了我!很好的回答:)太棒了,我知道这是一种类似的东西。干杯APIDoc总是很有用:奇怪的是,
flash\u代理
名称空间及其位置只在代理类文档的示例中提到。由于它是必需的,我有点惊讶它没有被列在flash.utils包的名称空间类别(如函数、接口和类)下。