Flash CS6 动作脚本 3 错误 #2025



我正在为一个类制作网页,并尝试使用 ActionScript 3 进行导航。我对它应该如何工作的理解是,当您单击顶部的链接时,它会使用 removeChild 删除当前显示的任何内容,并使用 addChild 添加新页面的内容。

从初始页面转到其中一个链接时,它工作正常。但是每当我从一个不是主页的页面转到另一个页面时,我都会得到:

参数错误: 错误 #2025: 提供的显示对象必须是子项 的调用方。 at flash.display::D isplayObjectContainer/removeChild() at nutshellMathReCoded4_fla::MainTimeline/hideOtherPages() at nutshellMathReCoded4_fla::MainTimeline/runSubtraction()

这是代码:

stop();
// Flash Imports
import flash.events.MouseEvent;
import flash.events.Event;
import flash.media.SoundMixer;
//Page Components //
// Home //
// Links
// Create Header & Nav //
// Logo Link
    var headerLogo:logoMainPage = new logoMainPage();
    headerLogo.x = 252.85;
    headerLogo.y = 18.00;
    //Addition Link
    var additionLink:addPageLink = new addPageLink();
    additionLink.x = 142.35;
    additionLink.y = 96.00;
    //Subtraction Link
    var subtractionLink:subPageLink = new subPageLink();
    subtractionLink.x = 208.60;
    subtractionLink.y = 144.60;
    // Multiplication Link
    var multiplicationLink:mulPageLink = new mulPageLink();
    multiplicationLink.x = 397.80;
    multiplicationLink.y = 100.00;
    // Division Link
    var divisionLink:divPageLink = new divPageLink();
    divisionLink.x = 597.95;
    divisionLink.y = 144.60;
//Animation
    var animation:mainAnimation = new mainAnimation();
    animation.x = 99.90;
    animation.y = 244.00;
//Addition // 
    var addSimpleX:additionSimpleX = new additionSimpleX();
    addSimpleX.x = 41;
    addSimpleX.y = 395.95;
    var addSimpleY:additionSimpleY = new additionSimpleY();
    addSimpleY.x = 364;
    addSimpleY.y = 395.95;
    var addSimpleAnswer:additionSimpleAnswer = new additionSimpleAnswer();
    addSimpleAnswer.x = 701;
    addSimpleAnswer.y = 395.95;
    var additionAddSign:additionSign = new additionSign();
    additionAddSign.x = 276.55;
    additionAddSign.y = 360.20;
    var additionEqualsSign:equalsSign = new equalsSign();
    additionEqualsSign.x = 613.95;
    additionEqualsSign.y = 360.20;
    var addSum:additionSummary = new additionSummary();
    addSum.x = 178.25;
    addSum.y = 202;
    var addTryOut:tryItOut = new tryItOut();
    addTryOut.x = 205.70;
    addTryOut.y = 475.65;
    var addDDLink:digDeeperLink = new digDeeperLink();
    addDDLink.x = 274.95;
    addDDLink.y = 696;
    var addTQLink:quizLink = new quizLink();
    addTQLink.x = 465;
    addTQLink.y = 696.50;
//Addition Deeper
    var addLong:additionExtended = new additionExtended();
    addLong.x = 193.00;
    addLong.y = 323.00;
    var addDDSum:additionDDSummary = new additionDDSummary();
    addDDSum.x = 222.40;
    addDDSum.y = 201.20;
    var addDDB2B:backToBasicsLink = new backToBasicsLink();
    addDDB2B.x = 271.95;
    addDDB2B.y = 696;
    var addDDTQ:quizLink = new quizLink();
    addDDTQ.x = 468;
    addDDTQ.y = 696;
//Subtraction
    var subSimpleX:subtractionSimpleX = new subtractionSimpleX();
    subSimpleX.x = 44;
    subSimpleX.y = 408.50;
    var subSimpleY:subtractionSimpleY = new subtractionSimpleY();
    subSimpleY.x = 367;
    subSimpleY.y = 408.50;
    var subSimpleAnswer:subtractionSimpleAnswer = new subtractionSimpleAnswer();
    subSimpleAnswer.x = 692.95;
    subSimpleAnswer.y = 408.50;
    var subtractionEqualsSign:equalsSign = new equalsSign();
    subtractionEqualsSign.x = 612.80;
    subtractionEqualsSign.y = 372.95
    var subtractionSubSign:subtractionSign = new subtractionSign();
    subtractionSubSign.x = 280.85;
    subtractionSubSign.y = 371.95;
    var subTryOut:tryItOut = new tryItOut();
    subTryOut.x = 221.8;
    subTryOut.y = 477.95;
    var subDDLink:digDeeperLink = new digDeeperLink();
    subDDLink.x = 274.95;
    subDDLink.y = 696;
    var subTQLink:quizLink = new quizLink();
    subTQLink.x = 465;
    subTQLink.y = 696.50;
    var subSum:subtractionSummary = new subtractionSummary();
    subSum.x = 147.30;
    subSum.y = 210.05;
// Subtraction Dig Deeper
    var subBudget:budget = new budget();
    subBudget.x = 367.95;
    subBudget.y = 400.90;
    var subExpenses:expenses = new expenses();
    subExpenses.x = 204.00;
    subExpenses.y = 513.40;
    var subDDT1:subtractionDD1 = new subtractionDD1();
    subDDT1.x = 264.05;
    subDDT1.y = 211;
    var subDDT2:subtractionDD2 = new subtractionDD2();
    subDDT2.x = 206.65;
    subDDT2.y = 351;
    var subDDT3:subtractionDD3 = new subtractionDD3();
    subDDT3.x = 131.80;
    subDDT3.y = 474.95;
    var subDDT4:subtractionDD4 = new subtractionDD4();
    subDDT4.x = 291.00;
    subDDT4.y = 463;
    var subCheckBudgetLink:checkBudgetLink = new checkBudgetLink();
    subCheckBudgetLink.x = 437;
    subCheckBudgetLink.y = 609.5;
    var subB2BLink:backToBasicsLink = new backToBasicsLink();
    subB2BLink.x = 271.95;
    subB2BLink.y = 696;
    var subDDTQLink:quizLink = new quizLink();
    subDDTQLink.x = 468;
    subDDTQLink.y = 696;
//Multiplication
    var mulSimpleX:multiplicationSimpleX = new multiplicationSimpleX();
    mulSimpleX.x = 30.85;
    mulSimpleX.y = 395.35;
    var mulSimpleY:multiplicationSimpleY = new multiplicationSimpleY();
    mulSimpleY.x = 370.85;
    mulSimpleY.y = 395.35;
    var mulSimpleAnswer:multiplicationSimpleAnswer = new multiplicationSimpleAnswer();
    mulSimpleAnswer.x = 691.90;
    mulSimpleAnswer.y = 395.35;
    var multiplicationMulSign:multiplicationSign = new multiplicationSign();
    multiplicationMulSign.x = 284.60;
    multiplicationMulSign.y = 365.95;
    var mulEqualsSign:equalsSign = new equalsSign();
    mulEqualsSign.x = 609.80;
    mulEqualsSign.y = 356.95;
    var mulSummary:multiplicationSummary = new multiplicationSummary();
    mulSummary.x = 145.30;
    mulSummary.y = 202.40;
    var mulTryOut:tryItOut = new tryItOut();
    mulTryOut.x = 218.80;
    mulTryOut.y = 461.95;
    var mulDDLink:digDeeperLink = new digDeeperLink();
    mulDDLink.x = 274.95;
    mulDDLink.y = 696;
    var mulTQLink:quizLink = new quizLink();
    mulTQLink.x = 465.00;
    mulTQLink.y = 696;

// Multiplication Deeper
    var mulDD1:multiplicationDD1 = new multiplicationDD1();
    mulDD1.x = 241.15;
    mulDD1.y = 209;
    var mulDD2:multiplicationDD2 = new multiplicationDD2();
    mulDD2.x = 297.05;
    mulDD2.y = 350.40;
    var mulDD3:multiplicationDD3 = new multiplicationDD3();
    mulDD3.x = 316.75;
    mulDD3.y = 393.65;
    var mulDD4:multiplicationDD4 = new multiplicationDD4();
    mulDD4.x = 297.55;
    mulDD4.y = 436.90;
    var mulB2BLink:backToBasicsLink = new backToBasicsLink();
    mulB2BLink.x = 271.95;
    mulB2BLink.y = 696;
    var mulDDTQL:quizLink = new quizLink();
    mulDDTQL.x = 468;
    mulDDTQL.y = 696;
// Division
    var divSimpleX:divisionSimpleX = new divisionSimpleX();
    divSimpleX.x = 42;
    divSimpleX.y = 397.5;
    var divSimpleY:divisionSimpleY = new divisionSimpleY();
    divSimpleY.x = 366.95;
    divSimpleY.y = 397.50;
    var divSimpleAnswer:divisionSimpleAnswer = new divisionSimpleAnswer();
    divSimpleAnswer.x = 698.95;
    divSimpleAnswer.y = 397.50;
    var divisionDivSign:divisionSign = new divisionSign();
    divisionDivSign.x = 277.80;
    divisionDivSign.y = 360.95;
    var divEqualsSign:equalsSign = new equalsSign();
    divEqualsSign.x = 609.80;
    divEqualsSign.y = 361.95;
    var divSummary:divisionSummary = new divisionSummary();
    divSummary.x = 112.50;
    divSummary.y = 202.20;
    var divTryOut:tryItOut = new tryItOut();
    divTryOut.x = 218.80;
    divTryOut.y = 466.95;
    var divDDLink:digDeeperLink = new digDeeperLink();
    divDDLink.x = 274.95;
    divDDLink.y = 696;
    var divTQLink:quizLink = new quizLink();
    divTQLink.x = 274.95;
    divTQLink.y = 696;
// Division Deeper
    var divDD1:divisionDD1 = new divisionDD1();
    divDD1.x = 239.60;
    divDD1.y = 215.00;
    var divDD2:divisionDD2 = new divisionDD2();
    divDD2.x = 328.65;
    divDD2.y = 336.70;
    var divDD3:divisionDD3 = new divisionDD3();
    divDD3.x = 308.95;
    divDD3.y = 381.20;
    var divB2BLink:backToBasicsLink = new backToBasicsLink();
    divB2BLink.x = 271.95;
    divB2BLink.y = 696;
    var divDDTQLink:quizLink = new quizLink();
    divDDTQLink.x = 468;
    divDDTQLink.y = 696;

// Quiz
    //Title
    var titleQuiz:quizTitle = new quizTitle();
    titleQuiz.x = 419.40;
    titleQuiz.y = 192;
    // Random Number Backgrounds
    var quizBG1:shortTextBG = new shortTextBG();
    quizBG1.x = 44.9;
    quizBG1.y = 283;
    var quizBG2:shortTextBG = new shortTextBG();
    quizBG2.x = 368.95;
    quizBG2.y = 283;
    var quizBG3:shortTextBG = new shortTextBG();
    quizBG3.x = 44.9;
    quizBG3.y = 360.25;
    var quizBG4:shortTextBG = new shortTextBG();
    quizBG4.x = 368.95;
    quizBG4.y = 360.25;
    var quizBG5:shortTextBG = new shortTextBG();
    quizBG5.x = 44.90;
    quizBG5.y = 440.20;
    var quizBG6:shortTextBG = new shortTextBG();
    quizBG6.x = 368.95;
    quizBG6.y = 440.20;
    var quizBG7:shortTextBG = new shortTextBG();
    quizBG7.x = 44.90;
    quizBG7.y = 518.80;
    var quizBG8:shortTextBG = new shortTextBG();
    quizBG8.x = 368.95;
    quizBG8.y = 518.80
    // Signs
    var quizAddSign:additionSign = new additionSign();
    quizAddSign.x = 280.05;
    quizAddSign.y = 251.90;
    var quizSubSign:subtractionSign = new subtractionSign();
    quizSubSign.x = 281.40;
    quizSubSign.y = 323.80;
    var quizMulSign:multiplicationSign = new multiplicationSign();
    quizMulSign.x = 288.20;
    quizMulSign.y = 414.05;
    var quizDivSign:divisionSign = new divisionSign();
    quizDivSign.x = 280.05;
    quizDivSign.y = 489.20;
    var quizAddEqualsSign:equalsSign = new equalsSign();
    quizAddEqualsSign.x = 603.90;
    quizAddEqualsSign.y = 251.90;
    var quizSubEqualsSign:equalsSign = new equalsSign();
    quizSubEqualsSign.x = 603.90;
    quizSubEqualsSign.y = 330.55;
    var quizMulEqualsSign:equalsSign = new equalsSign();
    quizMulEqualsSign.x = 603.90;
    quizMulEqualsSign.y = 409.20;
    var quizDivEqualsSign:equalsSign = new equalsSign();
    quizDivEqualsSign.x = 603.90;
    quizDivEqualsSign.y = 489.20;
    // Check quiz
    var quizCheck:checkQuiz = new checkQuiz();
    quizCheck.x = 369.95;
    quizCheck.y = 626.60;
    var answerWrong:wrongAnswer = new wrongAnswer();
    var answerCorrect:correctAnswer = new correctAnswer();

// Home Page //;
// Create Header & Nav //
// Logo
addChild(headerLogo);
addChild(additionLink);
addChild(subtractionLink);
addChild(multiplicationLink);
addChild(divisionLink);
addChild(animation);

headerLogo.addEventListener(MouseEvent.CLICK, runIndexPage);
function runIndexPage(e:MouseEvent):void
{
    // Hide other Pages
    hideOtherPages();
    addChild(animation);
    animation.gotoAndPlay(1);
}
// Addition Page //
additionLink.addEventListener(MouseEvent.CLICK, runAddition);
function runAddition(e:MouseEvent):void
{
    hideOtherPages();
    createAdditionPage();

}
subtractionLink.addEventListener(MouseEvent.CLICK, runSubtraction);
function runSubtraction(e:MouseEvent):void
{
        hideOtherPages();
        createSubtractionPage();
}
multiplicationLink.addEventListener(MouseEvent.CLICK, runMultiplication);
function runMultiplication(e:MouseEvent):void
{
        hideOtherPages();
        createMultiplicationPage();
}
divisionLink.addEventListener(MouseEvent.CLICK, runDivision);
function runDivision(e:MouseEvent):void
{
    hideOtherPages();
    createDivisionPage();
}

//Global Functions
function createAdditionPage():void
{
    addChild(addSimpleX);
    addChild(addSimpleY);
    addChild(addSimpleAnswer);
    addChild(additionAddSign);
    addChild(additionEqualsSign);
    addChild(addSum);
    addChild(addTryOut);
    addChild(addDDLink);
    addChild(addTQLink);
}
function createSubtractionPage():void
{
        addChild(subSimpleX);
        addChild(subSimpleY);
        addChild(subSimpleAnswer);
        addChild(subtractionSubSign);
        addChild(subtractionEqualsSign);
        addChild(subSum);
        addChild(subTryOut);
        addChild(subDDLink);
        addChild(subTQLink);
}
function createMultiplicationPage():void
{
        addChild(mulSimpleX);
        addChild(mulSimpleY);
        addChild(mulSimpleAnswer);
        addChild(multiplicationMulSign);
        addChild(mulEqualsSign);
        addChild(mulSummary);
        addChild(mulTryOut);
        addChild(mulDDLink);
        addChild(mulTQLink);
}
function createDivisionPage():void
{
        addChild(divSimpleX);
        addChild(divSimpleY);
        addChild(divSimpleAnswer);
        addChild(divisionDivSign);
        addChild(divEqualsSign);
        addChild(divSummary);
        addChild(divTryOut);
        addChild(divDDLink);
        addChild(divTQLink);
}
function hideOtherPages():void
{
    if(animation)
    {
        removeChild(animation);
        SoundMixer.stopAll();
    }
    else if(addSimpleX)
    {
        removeChild(addSimpleX);
        removeChild(addSimpleY);
        removeChild(addSimpleAnswer);
        removeChild(additionAddSign);
        removeChild(additionEqualsSign);
        removeChild(addSum);
        removeChild(addTryOut);
        removeChild(addDDLink);
        removeChild(addTQLink);
    }
    else if(addLong)
    {
        removeChild(addLong);
        removeChild(addDDSum);
        removeChild(addDDB2B);
        removeChild(addDDTQ);
    }
    else if(subSimpleX)
    {
        removeChild(subSimpleX);
        removeChild(subSimpleY);
        removeChild(subSimpleAnswer);
        removeChild(subtractionSubSign);
        removeChild(subtractionEqualsSign);
        removeChild(subSum);
        removeChild(subTryOut);
        removeChild(subDDLink);
        removeChild(subTQLink);
    }
    else if(subBudget)
    {
        removeChild(subBudget);
        removeChild(subExpenses);
        removeChild(subDDT1);
        removeChild(subDDT2);
        removeChild(subDDT3);
        removeChild(subDDT4);
        removeChild(subCheckBudgetLink);
        removeChild(subB2BLink);
        removeChild(subDDTQLink);
    }
    else if(mulSimpleX)
    {
        removeChild(mulSimpleX);
        removeChild(mulSimpleY);
        removeChild(mulSimpleAnswer);
        removeChild(multiplicationMulSign);
        removeChild(mulEqualsSign);
        removeChild(mulSummary);
        removeChild(mulDDLink);
        removeChild(mulTQLink);     
    }
    else if(mulDD1)
    {
        removeChild(mulDD1);
        removeChild(mulDD2);
        removeChild(mulDD3);
        removeChild(mulDD4);
        removeChild(mulB2BLink);
        removeChild(mulDDTQL);
    }
    else if(divSimpleX)
    {
        removeChild(divSimpleX);
        removeChild(divSimpleY);
        removeChild(divSimpleAnswer);
        removeChild(divisionDivSign);
        removeChild(divEqualsSign);
        removeChild(divSummary);
        removeChild(divTryOut);
        removeChild(divDDLink);
        removeChild(divTQLink);
    }
    else if(divDD1)
    {
        removeChild(divDD1);
        removeChild(divDD2);
        removeChild(divDD3);
        removeChild(divB2BLink);
        removeChild(divDDTQLink);
    }
    else if(titleQuiz)
    {
        removeChild(titleQuiz);
        removeChild(quizBG1);
        removeChild(quizBG2);
        removeChild(quizBG3);
        removeChild(quizBG4);
        removeChild(quizBG5);
        removeChild(quizBG6);
        removeChild(quizBG7);
        removeChild(quizBG8);
        removeChild(quizAddSign);
        removeChild(quizSubSign);
        removeChild(quizMulSign);
        removeChild(quizDivSign);
        removeChild(quizAddEqualsSign);
        removeChild(quizSubEqualsSign);
        removeChild(quizMulEqualsSign);
        removeChild(quizDivEqualsSign);
        removeChild(quizCheck);
        //Dynamic Quiz Removal Section ****
    }

}

这段代码看起来很可怕,但我不会深入研究它,因为它不是这个问题的优点。问题是你只检查(在函数hideOtherPages()中)对象的存在,而不是它们是否被添加到舞台。您无法从舞台中删除不存在的对象,这就是您收到此错误的原因,它就是这样说明的。

  1. 在尝试删除对象之前,可以检查对象是否已添加到舞台。
  2. 您可以通过简单循环从对象中删除所有子项。

在这种情况下,第二个选项是最好的。您将创建一个精灵,然后...

var myContainer:Sprite = new Sprite();
addChild(myContainer);
// Here you are adding children/first set of visible objects
myContainer.addChild(myObject);
// ...

现在,在您将新的对象集添加到容器之前,您可以调用"clearContainer()"函数来删除以前的对象。

function clearContainer() : void {
    while(myContainer.numChildren) {
        myContainer.removeChildAt(0);
    }
}

因此,您的代码将大大减少,因为您不会被迫手动删除每个项目......

或者,如果你想保留蛮力,你可以在手动删除对象之前检查对象是否存在,你可以通过使用函数getChildByName(name:String)来做到这一点。您可以为对象设置属性"name",然后检查"getChildByName"是否将返回对象或null,如果它是一个对象,则将其删除。所以一开始它看起来像这样:

var divisionLink:divPageLink = new divPageLink();
divisionLink.x = 597.95;
divisionLink.y = 144.60;
divisionLink.name = "divisionLink"; // setting a name

您的删除将如下所示:

else if(divisionLink && this.getChildByName("divisionLink"))
{
    removeChild(divisionLink);
}

并对每一项都这样做。这既乏味又缓慢,所以我不推荐它,但出于教育目的将其包括在内。

最新更新