使用Flash识别文本框中的各个值

时间:2011-01-15 18:00:58

标签: flash textbox

我想从用户输入中识别文本框中的特定字符串以添加到分数变量,如下所示 -

if(userWords.text == firstWord){         得分=得分+ 1;     }

给出的示例为分数添加1,但如果用户添加空格然后第二个单词,则文本框将其视为整体而不是单个单词,从而导致没有任何值添加到分数变量。

问题在于整个文本框被视为一个完整的字符串。相反,我想把它拆分,所以word1会在分数上加1,word2会在分数上加1,等等。

我对这个问题非常困惑,所以感谢任何可能提供帮助的人。

1 个答案:

答案 0 :(得分:0)

您可以使用StringHelper类的trim()方法。这将删除与指定字符串之前和之后的char参数匹配的所有字符。您可以在Adobe livedocs的String类页面底部的示例中找到该类。网址为http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/String.html,但也如下:

class StringHelper {

public function StringHelper() {
}

public function replace(str:String, oldSubStr:String, newSubStr:String):String {
    return str.split(oldSubStr).join(newSubStr);
}

public function trim(str:String, char:String):String {
    return trimBack(trimFront(str, char), char);
}

public function trimFront(str:String, char:String):String {
    char = stringToCharacter(char);
    if (str.charAt(0) == char) {
        str = trimFront(str.substring(1), char);
    }
    return str;
}

public function trimBack(str:String, char:String):String {
    char = stringToCharacter(char);
    if (str.charAt(str.length - 1) == char) {
        str = trimBack(str.substring(0, str.length - 1), char);
    }
    return str;
}

public function stringToCharacter(str:String):String {
    if (str.length == 1) {
        return str;
    }
    return str.slice(0, 1);
}
}

然后你可以按如下方式实现它:

var strHelper:StringHelper = new StringHelper();
if (strHelper.trim(userWords.text, " ") == firstWord) { score = score + 1; }

为了让生活更轻松(特别是如果您使用时间轴),您只需从StringHelper类中提取所需的方法并将其添加到您的代码中。这样您就可以调用函数而无需实例化StringHelper类并从其实例中调用它。以下是此示例:

function trim(str:String, char:String):String {
    return trimBack(trimFront(str, char), char);
}

function trimFront(str:String, char:String):String {
    char = stringToCharacter(char);
    if (str.charAt(0) == char) {
        str = trimFront(str.substring(1), char);
    }
    return str;
}

function trimBack(str:String, char:String):String {
    char = stringToCharacter(char);
    if (str.charAt(str.length - 1) == char) {
        str = trimBack(str.substring(0, str.length - 1), char);
    }
    return str;
}

function stringToCharacter(str:String):String {
    if (str.length == 1) {
        return str;
    }
    return str.slice(0, 1);
}

if (trim(userWords.text, " ") == firstWord) { score = score + 1; };