我认为您在此行有语法错误:
String str = str.substring(8,str.length-1);
如果你只是使用这个:
var d:Dictionary = new Dictionary();
d["Exhausted"] = "He who talks more is sooner exhausted, please keep smiling :)";
trace(d["Exhausted"]);
你可以看到一切都很好。
问题var str:String = str.substring(8,str.length-1);
在于您定义了一个名为 "str": 的字符串var str:String
,但是您分配了一个值,该值是substring()
在 str 上调用的方法的结果,并且当您在其上调用 substring 时,当然 str 尚不存在。不确定这是否有意义:您将 str 定义为在 str 上应用子字符串的结果。
actionscript 编译器应该抱怨 btw:
在属性字符串之后需要一个定义关键字(例如函数),而不是 str。
只是一个疯狂的猜测,但是您是否碰巧在代码中的其他地方定义了 str 并且您只是在使用 str 之前再次使用 str 更新它?在这种情况下,您不应该重新定义 str,您应该简单地分配一个新值。例如
//somewhere else
var str:String = "12345678Exhausted";
//further down
var Dic:Dictionary = new Dictionary();
Dic["Exhausted"] = "He who talks more is sooner exhausted, please keep smiling :)";
str = str.substring(8,str.length); // == str = "Exhausted";
trace('Dic[' + str + '] = ' + Dic[str]);
此外,另一个语法错误是您如何定义str
:应该是var str:String
(as2/as3 语法),而不是String str
(java/c++/etc.style)