【发布时间】:2015-07-19 21:38:34
【问题描述】:
我正在学习 AS3,但在编程(TP 和 Atari Basic)方面有一些过时的背景。在这个论坛上,我学会了使用如下循环来处理对象类中的每个变量,以便克隆对象(深或浅),或者在我的情况下为工具提示构建文本。但是我的不起作用。这是循环,以下是解释,您可以提供任何帮助,我将不胜感激!
var tooltipText:String;
var i:String;
for (i in bsm) {
if (!(bsm[i] is String)) {
if (bsm[i] != 0) {
tooltipText = i + ": " + bsm[i];
tooltip.extendTooltip(tooltipText, 0xFFFFFF);
}
}
}
请原谅可怕的变量名。 'i' 是一个字符串。 'bsm' 是类 StatMod 的非空实例,以
开头public class StatMod extends Object {
public static const ENCHANTMENTMODIFIER:String = "enchantmentModifier";
public var enchantmentType:String = "None";
public var enchantmentDescriptor:String = "None";
public var minDamage:Number = 0;
public var maxDamage:Number = 0;
public var attackSpeed:Number = 0.2;
预期的行为是遍历 StatMod 的每个变量(我不会全部显示,稍后会添加更多),如果变量是非零数,则创建一个字符串(“attackSpeed:例如 0.2"),然后将该字符串添加到工具提示中。 tooltip.extendTooltip 功能正常。
观察到的行为基本上是计算机认为 bsm 中没有变量。
我可以说什么或做什么来让计算机相信 bsm 中确实有有个变量?
【问题讨论】:
-
不要从对象外部访问属性,而是向您的类添加一个方法,该方法返回工具提示应显示的
String。您可以在子类中重写该方法以获得不同的行为,同时利用多态性。
标签: actionscript-3 object for-loop