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

gather total score of quiz questions with new .as class (2 errors currently)

我目前创建了一个新的 actionScript class,名为 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;
        }
//    }
//}

此解决方案源自我的原始问题:

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


错误 1。 在 class 之外使用了属性。 所以我注释掉了前几行,但错误继续指向首先暴露的任何行。

错误 2。 'Int' 无法加载。

感谢任何建议,

您的问题可能是在 AnimateCC/FlashPro.

中的时间线上使用上述代码的结果

Class 文件(及其相应的属性,如 public/private)需要在它们自己的 actionscript (.as) 文件中。

要在 AnimateCC 中创建 class 文件,请转到 文件 -> 新建 并选择 ActionScript 3.0 Class.给它 class Quiz 的名称(这样它就与您在代码中声明的内容相匹配)

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

将文件保存在与 .fla 相同的目录中

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

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

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