TypeError: Error #2007: Parameter child must be non-null

元气小坏坏 提交于 2019-12-23 22:21:48

问题


I am running the following piece of code:

package {

import fl.controls.Button;
import fl.controls.Label;
import fl.controls.RadioButton;
import fl.controls.RadioButtonGroup;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.text.TextFieldAutoSize;

public class RadioButtonExample extends Sprite {
    private var j:uint;
    private var padding:uint = 10;
    private var currHeight:uint = 0;
    private var verticalSpacing:uint = 30;

    private var rbg:RadioButtonGroup;
    private var questionLabel:Label;
    private var answerLabel:Label;
    private var question:String = "What day is known internationally as Speak Like A Pirate Day?";
    private var answers:Array = [ "August 12", "March 4", "September 19", "June 22" ];

    public function RadioButtonExample() {
        setupQuiz();
    }
    private function setupQuiz():void {
        setupQuestionLabel();
        setupRadioButtons();
        setupButton();
        setupAnswerLabel();
    }
    private function setupQuestionLabel():void {
        questionLabel = new Label();
        questionLabel.text = question;
        questionLabel.autoSize = TextFieldAutoSize.LEFT;
        questionLabel.move(padding, padding + currHeight);

        currHeight += verticalSpacing;
        addChild(questionLabel);
    }
    private function setupAnswerLabel():void {
        answerLabel = new Label();
        answerLabel.text = "";
        answerLabel.autoSize = TextFieldAutoSize.LEFT;
        answerLabel.move(padding + 120, padding + currHeight);

        addChild(answerLabel);
    }
    private function setupRadioButtons():void {
        rbg = new RadioButtonGroup("question1");
        createRadioButton(answers[0], rbg);
        createRadioButton(answers[1], rbg);
        createRadioButton(answers[2], rbg);
        createRadioButton(answers[3], rbg);
    }
    private function setupButton():void {
        var b:Button = new Button();
        b.move(padding, padding + currHeight);
        b.label = "Check Answer";
        b.addEventListener(MouseEvent.CLICK, checkAnswer);

        addChild(b);
    }
    private function createRadioButton(rbLabel:String, rbg:RadioButtonGroup):void {
        var rb:RadioButton = new RadioButton();
        rb.group = rbg;
        rb.label = rbLabel;
        rb.move(padding, padding + currHeight);
        addChild(rb);

        currHeight += verticalSpacing;
    }
    private function checkAnswer(e:MouseEvent):void {
        if (rbg.selection == null) {
            return;
        }
        var resultStr:String = (rbg.selection.label == answers[2]) ? "Correct" : "Incorrect";
        answerLabel.text = resultStr;
    }
}

}

This is from Adobe Livedocs. http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/ I have added a Radiobutton to stage and then deleted it so that its there in the library.

However I am getting the following error

TypeError: Error #2007: Parameter child must be non-null. at flash.display::DisplayObjectContainer/addChildAt() at fl.controls::BaseButton/fl.controls:BaseButton::drawBackground() at fl.controls::LabelButton/fl.controls:LabelButton::draw() at fl.controls::Button/fl.controls:Button::draw() at fl.core::UIComponent/::callLaterDispatcher()

Can anyone tell me what is going on and how to remove this error.


回答1:


the problem here is that you have not included a Button Component to your library.

drag a Button from the components panel (in addition to the RadioButton component) into your library (or drag it to the stage and delete it). the runtime error will go away and you'll have a working "Check Answer" button below the questionare.



来源:https://stackoverflow.com/questions/4573282/typeerror-error-2007-parameter-child-must-be-non-null

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!