Остановить функцию в динамической точке на основе ее параметров - PullRequest
0 голосов
/ 04 января 2012

Привет, мне интересно, могу ли я остановить эту функцию в динамической точке на основе ее параметров. Это для игры, и игровой движок использует собственные методы для печати текста.

function FillQuestJournal(activeQuests);
Quest0.text = quests[0]
Quest1.text = quests[1]
Quest2.text = quests[2]
Quest3.text = quests[3]
Quest4.text = quests[4]
Quest5.text = quests[5]
Quest6.text = quests[6]
Quest7.text = quests[7]
Quest8.text = quests[8]
Quest9.text = quests[9]
Quest10.text = quests[10]
Quest11.text = quests[11]
Quest12.text = quests[12]
Quest13.text = quests[13]
Quest14.text = quests[14]
Quest15.text = quests[15]

Функция печатает каждый элемент массива на новой строке, и я хочу, чтобы он остановился, когда напечатал элемент в конце массива, чтобы впоследствии не выводить «undefined» на каждой строке. квесты - это массив, и я хочу, чтобы функция остановилась в точке, основанной на параметре: activeQest, который содержит длину массива. Так что если activeQues = 6, функция остановится, как только завершит эту строку:

Quest6.text = quests[6]

РЕДАКТИРОВАТЬ: Хорошо, так что это фон:

width = ui.getWidth();
height = ui.getHeight();
centerX = width/2;
centerY = height/2;
Quest0 = UILabel(" ", centerX - 200, centerY - 90);
Quest1 = UILabel(" ", centerX - 200, centerY - 80);
Quest2 = UILabel(" ", centerX - 200, centerY - 70);
Quest3 = UILabel(" ", centerX - 200, centerY - 60);
Quest4 = UILabel(" ", centerX - 200, centerY - 50);
Quest5 = UILabel(" ", centerX - 200, centerY - 40);
Quest6 = UILabel(" ", centerX - 200, centerY - 30);
Quest7 = UILabel(" ", centerX - 200, centerY - 20);
Quest8 = UILabel(" ", centerX - 200, centerY - 10);
Quest9 = UILabel(" ", centerX - 200, centerY);
Quest10 = UILabel(" ", centerX - 200, centerY + 10);
Quest11 = UILabel(" ", centerX - 200, centerY + 20);
Quest12 = UILabel(" ", centerX - 200, centerY + 30);
Quest13 = UILabel(" ", centerX - 200, centerY + 40);
Quest14 = UILabel(" ", centerX - 200, centerY + 50);
Quest15 = UILabel(" ", centerX - 200, centerY + 60);

Это создает серию строк пустого текста, которые затем заполняются элементами из массива в функции, которую я напечатал ранее в посте. Имейте в виду, что это использует методы из программы, которую я использую.

Ответы [ 3 ]

0 голосов
/ 04 января 2012

Попробуйте с приведенным ниже кодом.Это может быть, как вы хотите.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js " type="text/javascript"></script>
    <script>
        var quests = [];
        // set array variables
        quests[0] = "val0";
        quests[1] = "val1";
        quests[2] = "val2";
        quests[3] = "val3";
        quests[4] = "val4";
        quests[5] = "val5";

        function FillQuestJournal(activeQuests) {
            $("#Quest" + activeQuests).val(quests[activeQuests]);
        }
        $(document).ready(function () {
            /// call the fill question function
         // pass parameter 5    
            FillQuestJournal(5)
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <input type="text" value="0" id="Quest0" />
    <input type="text" value="1" id="Quest1" />
    <input type="text" value="2" id="Quest2" />
    <input type="text" value="3" id="Quest3" />
    <input type="text" value="4" id="Quest4" />
    <input type="text" value="5" id="Quest5" />
    </div>
    </form>
</body>
</html>
0 голосов
/ 04 января 2012

Если вы можете напечатать значения, то используйте, как показано в примере ниже.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js " type="text/javascript"></script>
    <script>
        function FillQuestJournal(activeQuests) {
            $("#data").html('');
            for (var i = 0; i < activeQuests; i++) {
                $("#data").append("Quest" + i + ".text = quests[" + i + "]");
                $("#data").append("<br>");
            }
        }
        $(document).ready(function () {
            /// call the fill question function
         // pass parameter 5    
            FillQuestJournal(5)
        });
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div id="data">

    </div>
    </form>
</body>
</html>
0 голосов
/ 04 января 2012

Используйте «для» или «в то время как»

var q;
while(q < activeQuests) {

    //Do whatever 

    q++;
}

for (var q=0; q<activeQuests; q++) {

    //Do whatever

}

Что именно вы пытаетесь здесь? Если вы можете предоставить некоторую предысторию, могут быть более эффективные способы сделать это.

...