Эффективная навигация по массивам и выбранным строкам - PullRequest
0 голосов
/ 09 ноября 2018

Я - нуб, играющий с actionScript, но я чувствую, что этот вопрос - основной вопрос кодирования Мой проект похож на эту картинку .

У меня есть четыре квадрантных области (красная, синяя, желтая и зеленая), в которые я добавляю текстовые кнопки в каждую область с одним словом в каждой кнопке. В каждом разделе есть 16 слов, которые добавляются из 4 массивов с предустановленными словами (redWordArray, greenWordArray, yellowWordArray, blueWordArray). При нажатии текстовая кнопка светится с помощью светящегося фильтра, и слово добавляется в другой массив для сбора данных. Например, красное слово при нажатии добавляется в красный массив (redChosenArray). При повторном нажатии на слово оно удаляет фильтр свечения и удаляется из выбранного массива.

Я обнаружил, что моя работа медленная, и мне интересно, правильно ли я добавляю и удаляю слова. Это мои функции для добавления фильтров свечения и выбранного слова в массив. Мне бы очень хотелось, чтобы вы поделились своими лучшими практиками кодирования, так как я уверен, что это беспорядок!

Спасибо!

 </p>

<code>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}
</code>

...