使用新的.as类收集测验问题的总分(目前有2个错误)

时间:2017-05-10 18:38:47

标签: actionscript actionscript-2

我目前创建了一个名为Quiz.as

的新动作脚本
// package
// {
//    public class Quiz
//    {
        public var knowledgePoints:int = 10;
        public var allQuestions:Array = new Array;
        public var questionCorrect:Boolean = false;

        public function getTotalScore():int
        {
          //  var totalScore:int = 0;

              var totalScore = 0;

            for (var i = 0; i < allQuestions.length; i++)
            {
                totalScore += allQuestions[i].getCalculatedScore();

                if (currentModule.allQuestions[i].parent.questionCorrect)
                {
                    knowledgePoints++;
                }
                else
                {
                    knowledgePoints--;
                }
            }
            debugLog("Total score: " + totalScore);
            debugLog(knowledgePoints);

            return totalScore;
        }
//    }
//}

此解决方案源自我原来的问题:keeping track of a series of simple multiple choice web form answers

但是现在使用上面的代码我在flash控制台中遇到错误。我最近修复这些错误的尝试是上面注释掉的区域。

错误1。在课堂外使用的属性。 所以我注释掉了第一行,但错误继续指向首先暴露的行。

错误2。无法加载“Int”。

感谢您的任何建议,

1 个答案:

答案 0 :(得分:1)

您的问题可能是在AnimateCC / FlashPro的时间轴上使用上述代码的结果。

类文件(及其相应的属性,如public / private)需要位于自己的actionscript(.as)文件中。

要在AnimateCC中创建类文件,请转到 file - &gt;新并选择 ActionScript 3.0类。给它类名Quiz(所以它与你在代码中声明的匹配)

用您问题中的类文件代码替换默认代码(您还需要恢复那些已注释掉的行)

将文件保存在.fla

所在的目录中

要在时间轴中使用新的类文件,您可以执行以下操作:

var quiz:Quiz = new Quiz(); //make an instance of your custom class

quiz.allQuestions.push(whateverAQuestionIs); //add a question to your array

trace(quiz.getTotalScore()); //trace out the total score

如果您想在时间轴中使用该代码并放弃使用类文件,则只需删除4 public个关键字(除了您已经注释掉的行)