1

クイックバージョン:

2 つの RadioButtonGroups をステートメントと比較しようとするとif、グループの 1 つに RadioButton が選択されていない場合、エラーが発生します。

エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。

長いバージョン:

同じ内容のアクション スクリプトで 2 つのリストを作成し、それらを RadioButtonGroups に保存しています。アイデアは、ユーザーが列 A から要素を選択し、次に列 B から要素を選択するというものです。この機能は正常に動作しますが、ボタンをクリックしたときに両方の列が選択されているかどうかをプログラムがチェックする検証を行うと、次のようになります。

プロパティ エラーにアクセスできません (上記を参照)。

これが私のコードです:

import fl.controls.RadioButtonGroup;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
import fl.controls.RadioButton;

var focus1:RadioButtonGroup = new RadioButtonGroup("Focus 1");
var focus2:RadioButtonGroup = new RadioButtonGroup("Focus 2");
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
var btn1:Array = new Array();
var btn2:Array = new Array();

myLoader.load(new URLRequest("courseLoader.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);

function processXML(e:Event):void {
    myXML = new XML(e.target.data);
    
    for (var i = 0; i < myXML.COURSES.length(); i++) {
        var radA:RadioButton = new RadioButton();
        var radB:RadioButton = new RadioButton();
        
            // Create left focus column
        radA.x = 50;
        radA.y = i * 25 + 75;
        radA.width = 300;
        radA.name = "radA" + i;
        radA.label = myXML.COURSES[i].NAME[0];
        addChild(radA);
            btn1.push(radA);
        btn1[i].group = focus1;
        
        // Create right focus column
        radB. x = 450;
        radB.y = i * 25 + 75;
        radB.width = 300;
        radB.name = "radB" + i;
        radB.label = myXML.COURSES[i].NAME[0];
        addChild(radB);
        btn2.push(radB);
        btn2[i].group = focus2;
}

submit_btn.addEventListener(MouseEvent.CLICK, checkResult);

function checkResult(e:MouseEvent):void {
    var tempVar 
    
    if (focus1.selection.label == focus2.selection.label) {
        feedback.text = "Nope, they're both the same. Try again";
    } /* THIS IS WHERE IT STOPS WORKING */ else if (focus1.selection == null) {
        feedback.text = "You forgot to choose a focus from the 2nd column!";
    } else if (focus1.selection.label == null) {
        feedback.text = "You forgot to choose a focus from the 1st column!";
    } else if (focus2.selection.label == null) {
        feedback.text = "You forgot to choose a focuse from the 2nd column!";
    }
}

両方のグループを比較し、それらのいずれかが選択されていないかどうかを確認するために、さまざまな種類のプロパティとメソッドを使用しようとしましたが、同じエラーが発生し続けます。

4

1 に答える 1

0

最初にラベルをチェックしていて、選択が null かどうかをチェックするのは THEN だけです。これは間違っています。逆の順序で行う必要があります。

if (focus1.selection == null) {
    feedback.text = "You forgot to choose a focus from the 1st column!";
} else if (focus2.selection == null) {
    feedback.text = "You forgot to choose a focus from the 2nd column!";
} else if (focus1.selection.label == focus2.selection.label) {
    feedback.text = "Nope, they're both the same. Try again";
} 
于 2012-09-18T08:02:06.877 に答える