JSFL 命令将文本字段拆分为单词 - Flash 数组顺序错误
Posted
技术标签:
【中文标题】JSFL 命令将文本字段拆分为单词 - Flash 数组顺序错误【英文标题】:JSFL Command Split Textfield into Words - Flash Array Order error 【发布时间】:2012-10-09 12:41:24 【问题描述】:此命令应该在 Flash 中获取选定的文本字段,并根据文本字段中的单词或空格将其分成不同的组。该命令混淆了单词的顺序。 (在下面的代码中,我取出了将组分配到不同层的部分。)
如果我输入“Test of the command”字样并运行该命令,它会反转字符数并将文本字段从后向前切开。
例如,第一个单词“TEST”有四个字母。错误是它将从单词“command”末尾的“d”处的文本字段的末尾开始计数。
所以结果是“mand”,而应该是“TEST”,等等。如果从后往前数,可以看到拆分对应的字母个数是正确的,但是反过来了……
我的第一个直觉是尝试使用 .reverse() 反转其中一个数组的顺序。不过没用。
我正在使用 Flash CS 5.5、AS3。请帮忙!
这是我正在谈论的图片......
var doc = fl.getDocumentDOM();
var mystring = doc.getTextString();
var numberOfWords = mystring.split(" ").length;
var wordArray = new Array();
for (var k = 0; k < numberOfWords; k++)
wordArray[k] = new Array();
cntrNew = i = j = 0;
for (var ctr = 0; ctr < mystring.length; ctr++)
if (mystring.charAt(ctr) == " ")
i++;
else
wordArray[i].push(cntrNew);
cntrNew++;
doc.breakApart();
var selectionArray = new Array();
var tempArray = new Array();
var finalArray = new Array();
selectionArray = doc.selection;
doc.selectNone();
for (var i in wordArray)
for (var k = 0; k < wordArray[i].length; k++)
fl.trace(wordArray[i][k]);
//wordArray.reverse();
tempArray[k] = selectionArray[wordArray[i][k]];
fl.trace("break");
doc.selection = tempArray;
doc.group();
finalArray[i] = doc.selection;
doc.selectNone();
【问题讨论】:
你只是想在空格处分割字符串?? 【参考方案1】:也许这会有所帮助。我稍微简化了你的过程。我在一个 AS3 项目中测试了一个名为“txt”的舞台上的文本字段
var mystring:String = txt.text;
var words:Array = mystring.split(" ");
for (var i = 0; i < words.length; i++)
for (var k = 0; k < words[i].length; k++)
trace("letter:",words[i].charAt(k));
trace("-");
它输出:
letter: t
letter: e
letter: s
letter: t
-
letter: o
letter: f
-
letter: t
letter: h
letter: e
-
letter: c
letter: o
letter: m
letter: m
letter: a
letter: n
letter: d
letter: s
-
【讨论】:
好的,那么我如何将这些词分成单独的影片剪辑?我是否必须将这些 words[i].charAt(k)) 添加到另一个数组中,然后将其选中或拆分并分组? 嘿,所以我让它输出正确的顺序......但由于某种原因,结果仍然是一样的...... 没关系我发现我可以反转计数器的 for 循环而不是这个 for (var ctr = 0; ctr以上是关于JSFL 命令将文本字段拆分为单词 - Flash 数组顺序错误的主要内容,如果未能解决你的问题,请参考以下文章