0
package {
    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.events.MouseEvent;

    public class coinFlip extends MovieClip {// class
        var bool:Boolean;
        var num1:Number;
        var counter:int;
        public function coinFlip() {// constructor
            RandomTruth();
            var textF1:TextField = new TextField();
            FlipUntilHead(RandomTruth);             // the error is right here*
            if (bool == false) {
                textF1.text = "tails";
            } else {
                textF1.text = "heads";
            }
            addChild(textF1);
            function RandomTruth() {
                num1 = Math.random();
                //trace(num1);

                if (num1 < 0.5) {
                    bool = false;
                    return;
                } else {
                    bool = true;
                    return;
                }
            function FlipUntilHead(RandomTruth) {
                while (bool == false) {
                    RandomTruth();
                    counter ++;
                    return
                    }
                //trace(counter);
                }
            }
        }// end of constructor
    }// end of class
}// end of package (program)

该程序应该“翻转”一枚硬币,直到它落在正面,使用 Math.random 和布尔变量来声明它是“正面”还是“反面”。

我认为这可能是一个非常简单的错误,我只是愚蠢(编程初学者)。错误是:

“1180:调用可能未定义的方法 FlipUntilHead”

4

1 回答 1

0

问题 1:您不必将任何参数传递给您的FlipUntilHead()函数,因为该函数已经调用了RandomTruth().

而不是function FlipUntilHead(RandomTruth)使用function FlipUntilHead().

然后,而不是

RandomTruth();
var textF1:TextField = new TextField();
FlipUntilHead(RandomTruth);

采用

var textF1:TextField = new TextField();
FlipUntilHead();

尽管函数名称确实存在,但由于它不了解您传递RandomTruth给它的方式,因此引发了错误。

问题 2:另外,应该有一个}just before function FlipUntilHead(){,并且}在你的程序末尾少一个。

问题3:最后,while循环内部FlipUntilHead()没有正确循环,因为return在第一个循环处有一条语句立即结束函数。这是最终代码:

package {
    import flash.display.MovieClip;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.events.MouseEvent;

    public class coinFlip extends MovieClip {
        var bool:Boolean;
        var num1:Number;
        var counter:int;
        public function coinFlip() {
            var textF1:TextField = new TextField();
            FlipUntilHead();            
            if (bool == false) {
                textF1.text = "tails";
            } else {
                textF1.text = "heads";
            }
            addChild(textF1);
            function RandomTruth() {
                num1 = Math.random();
                if (num1 < 0.5) {
                    bool = false;
                    return;
                } else {
                    bool = true;
                    return;
                }
            }
            function FlipUntilHead() {
                while (bool == false) {
                    RandomTruth();
                    counter++;
                }
            }
        }
    }
}
于 2013-10-05T19:06:58.930 回答