Ошибка типа: Ошибка № 2007: дочерний параметр должен быть ненулевым - PullRequest
3 голосов
/ 01 января 2011

Я использую следующий фрагмент кода:

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;
    }
}

}

Это из Adobe Livedocs. http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/ Я добавил Radiobutton на сцену, а затем удалил его, чтобы он был в библиотеке.

Однако я получаю следующую ошибку

TypeError: Ошибка # 2007: дочерний параметр должен быть ненулевым. на flash.display :: DisplayObjectContainer / addChildAt () в fl.controls :: BaseButton / fl.controls: BaseButton :: drawBackground () в fl.controls :: LabelButton / fl.controls: LabelButton :: draw () в fl.controls :: Button / fl.controls: Button :: draw () на fl.core :: UIComponent / :: callLaterDispatcher ()

Может кто-нибудь сказать мне, что происходит и как устранить эту ошибку.

1 Ответ

9 голосов
/ 01 января 2011

Проблема здесь в том, что вы не включили Компонент кнопки в свою библиотеку.

перетащите кнопку с панели компонентов (в дополнение к компоненту RadioButton ) в свою библиотеку (или перетащите ее на сцену и удалите ее). ошибка во время выполнения исчезнет, ​​и у вас будет рабочая кнопка «Проверить ответ» под вопросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...