【问题标题】:1180: Call to a possibly undefined method FlipUntilHead1180:调用可能未定义的方法 FlipUntilHead
【发布时间】:2013-10-06 05:39:23
【问题描述】:
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"

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

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

    function FlipUntilHead()代替function FlipUntilHead(RandomTruth)

    然后,而不是

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

    使用

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

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

    问题 2:另外,function FlipUntilHead(){ 之前应该有一个 },在程序结束时应该少一个 }

    问题 3: 最后,FlipUntilHead() 中的 while 循环没有正确循环,因为有一个 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++;
                    }
                }
            }
        }
    }
    

    【讨论】:

    • 其实我刚试了下,还是报错。为什么它不起作用还有另一个原因吗?顺便说一句,同样的错误。
    • 很抱歉 - 刚刚找到最后一个问题:确保您的 FlipUntilHead() 函数在您的 RandomTruth() 函数的外部。更新了答案。最后一件事是让您的程序正常运行 - 将 returnFlipUntilHead() 中取出。
    • 是的!那解决了它!非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2012-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多