このコマンドは、Flash で選択されたテキスト フィールドを取得し、テキスト フィールド内の単語またはスペースに基づいて異なるグループに分割することになっています。コマンドが単語の順序を混同しています。(以下のコードでは、グループを異なるレイヤーに配布する部分を取り出しました。)
「コマンドのテスト」という単語を入力してコマンドを実行すると、文字数が逆になり、テキストフィールドが後ろから前に切り取られます。
たとえば、最初の単語「TEST」は 4 文字です。エラーは、単語「 command 」の末尾の「 d 」でテキストフィールドの末尾からカウントを開始することです。
その結果、"TEST" を切り詰める必要があるのに、 " mand " を切り詰めてしまいます。後ろから前に数えると、分割は正しい文字数に対応していることがわかりますが、逆になっています...
私の最初の本能は、配列の 1 つの順序を .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();
}