プロが教える店舗&オフィスのセキュリティ対策術

var lcr = "Left";
map(lcr);
function map(lcr) {
var Left_map = new Array("ba","rc","ba","re","be","wa");

trace(this[lcr+"_map"]);// undefined
trace(Left_map);//ba,rc,ba,re,be,wa
}
function内で this[lcr+"_map"] を使いたいのですが、function内だと undefined になってしまいます。
どうすればfunction内でも this[lcr+"_map"] が使えるようになりますか?

よろしくお願いします。

A 回答 (1件)

質問文のコードがrootだとすると、thisはrootを表します。


varはローカル変数を作成します。
以上を踏まえて。

function map(lcr) {
var Left_map = new Array("ba","rc","ba","re","be","wa");//varでmap()内“限定”の変数Left_mapを作成

trace(this[lcr+"_map"]);// undefined //書き換えると、_root.Left_map。_rootには存在しない変数
trace(Left_map);//ba,rc,ba,re,be,wa//map()内で変数Left_mapを探す(無ければ_rootのプロパティを探す)
}

要は参照する場所を間違えていますね。


改善案。

var lcr = "Left";
map(lcr);

var Left_map = new Array("ba","rc","ba","re","be","wa");//グローバル(に近い)変数にするためfunction外へ

function map(lcr) {
trace(this[lcr+"_map"]);// undefined → ba,rc,ba,re,be,wa
trace(Left_map);//ba,rc,ba,re,be,wa
}

ところでAS1.0でよかったのでしょうか?
    • good
    • 0
この回答へのお礼

AS3.0ですが、

var lcr = "Left";
var Left_map = new Array("ba","rc","ba","re","be","wa");
map(lcr);

これで、できました。
回答ありがとうございます。

お礼日時:2009/10/19 22:03

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!