私はアクションスクリプトをいじる初心者ですが、この質問は基本的なコーディングの質問だと思います私のプロジェクトはこの写真に似ています。
4 つの象限領域 (赤、青、黄、緑) があり、各ボタンに 1 つの単語を含むテキスト ボタンを各領域に追加しています。各セクションには、事前設定された単語 (redWordArray、greenWordArray、yellowWordArray、blueWordArray) を持つ 4 つの配列から追加された 16 の単語があります。クリックすると、グロー フィルターを使用してテキスト ボタンが光り、単語がデータ収集用の別の配列に追加されます。たとえば、クリックすると赤い単語が赤い配列 (redChosenArray) に追加されます。単語をもう一度クリックすると、グロー フィルターが削除され、選択した配列から削除されます。
パフォーマンスが遅いことに気付き、単語を正しく効率的に追加および削除できているかどうか疑問に思っています。これらは、グロー フィルターと選択した単語を配列に追加するための関数です。混乱していると確信しているので、ベストコーディングプラクティスについての洞察をお待ちしています!
ありがとうございました!
function selectWord(event:MouseEvent):void
{
var tempWord:String = event.currentTarget.mood.text;
var tempArray:Array;
if (event.currentTarget.clicked == false)
{
event.currentTarget.filters = filterArray;
event.currentTarget.clicked = true;
tempArray = addToArray(tempWord)
tempArray.push(tempWord);
trace(redChosen);
trace(blueChosen);
trace(yellowChosen);
trace(greenChosen);
trace("");
}else if(event.currentTarget.clicked == true)
{
event.currentTarget.filters = emptyFilterArray;
event.currentTarget.clicked = false;
removeMoodWord(tempWord);
trace(redChosen);
trace(blueChosen);
trace(yellowChosen);
trace(greenChosen);
trace("");
}
}
function addToArray(moodWord:String):Array
{
var wordFound:Boolean = false;
var allWords:int = 16;
var chosenArray:Array;
while (!wordFound)
{
for (var h:int = 0; h < allWords; h++)
{
if (moodWord == redWords[h])
{
chosenArray = redChosen;
wordFound = true;
}else if (moodWord == yellowWords[h])
{
chosenArray = yellowChosen
wordFound = true;
}else if (moodWord == greenWords[h])
{
chosenArray = greenChosen
wordFound = true;
}else if (moodWord == blueWords[h])
{
chosenArray = blueChosen
wordFound = true;
}
}
}
return chosenArray;
}
function removeMoodWord(moodWord:String):void
{
if (redChosen.indexOf(moodWord) >= 0)
{
redChosen.splice(redChosen.indexOf(moodWord), 1);
}else if (blueChosen.indexOf(moodWord) >= 0)
{
blueChosen.splice(blueChosen.indexOf(moodWord), 1);
}else if (yellowChosen.indexOf(moodWord) >= 0)
{
yellowChosen.splice(yellowChosen.indexOf(moodWord), 1);
}else if (greenChosen.indexOf(moodWord) >= 0)
{
greenChosen.splice(greenChosen.indexOf(moodWord), 1);
}
i fee}