この行に構文エラーがあると思います。
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」という名前の文字列を定義することですが、strで呼び出されvar str:String
たメソッドの結果である値を割り当て、substring()
substringを呼び出したときにstrがまだ存在していません。これが理にかなっているかどうかわからない:strに部分文字列を適用した結果としてstrを定義します。
actionscriptコンパイラはbtwに文句を言うべきでした:
strではなく属性Stringの後に定義キーワード(関数など)が必要です。
ただの大げさな推測ですが、コード内のどこかで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
:(java / c ++ / var str:String
etc。style)ではなく(as2 / as3構文)である必要がありますString str