Я пытался this[dialogueVar]
... но после
используя trace()
для проверки, я получаю: " undefined ".
Если ваш код находится внутри класса (например: не написан на Действия панель), простое решение - сначала объявить переменные (как public или private vars), то можете использовать их внутри других функций без ошибок.
//# declare public variables (before using inside any later functions)
public var playerName :String = "";
public var dialogueLine :String ="";
Я хочу, чтобы функциональность заменяла текст в двойных скобках, например ((playerName))
, со значением переменной, указанной в скобках.
С вышеуказанным исправлением ваша попытка кода должна работать. Тест join
вот так:
dialogueLine = dialogueLine.split("((" + dialogueVar + "))").join( this[dialogueVar] + "...!!");
Помните, что любое значение, полученное с помощью dialogueVar =
, должно существовать как открытая или закрытая переменная.
Наконец, ваш пример кода должен выглядеть примерно так:
//# declare public variables (before using inside any functions)
public var playerName :String = "";
public var dialogueLine :String ="";
//# inside some fuction, update playerName with expected "Anon"...
playerName = "Anon";
//# your problematic function now works like this...
function playFrame(frame:String):Function
{
return function(evt:Event = null):void
{
...
dialogueLine = dialogueText.text;
//dialogueLine = "hello there, I see your name is ((playerName))";
for(var i:int = 0; i < dialogueLine.split("((").length - 1; i++)
{
var dialogueVar:String = dialogueLine.substring(dialogueLine.indexOf("((") + 2, dialogueLine.indexOf("))"));
dialogueLine = dialogueLine.split("((" + dialogueVar + "))").join( this[dialogueVar] + "...!!");
}
dialogueText.text = "";
...
}
}
PS: Если ваш код находится на временной шкале (Действия), протестируйте этот код, чтобы получить представление:
var playerName :String = "Anon";
var dialogueLine :String ="";
var str_Output :String = "";
dialogueLine = "hello there, I see your name is ((playerName))";
var dialogueVar:String = dialogueLine.substring(dialogueLine.indexOf("((") + 2, dialogueLine.indexOf("))"));
str_Output = dialogueLine.split("((" + dialogueVar + "))").join( this[dialogueVar] + "...!!");
trace ("str_Output : " + str_Output); //# check if expected...