【问题标题】:Calling functions in Actionscript: "Term is undefined and has no properties"在 Actionscript 中调用函数:“术语未定义且没有属性”
【发布时间】:2012-11-29 10:28:15
【问题描述】:

我正在编写一个基因适应度程序,我目前正在编写一些代码来计算每个生物体的“适应度”值。

我正在尝试调用一个初始化每个基因型的函数;

function random_genotype_initialisation():void 
{
    //stuff
}

通过使用我在 C# 和 Java 中习惯的典型方法调用;

random_genotyoe_initialisation();

但是这会返回错误:“TypeError: Error #1010: A term is undefined and has no properties.”

我在其他地方寻求帮助,并找到了一些建议,例如声明一个变量并“调用”它。

var rep = replicate_new_generation();
rep.call();

有什么建议吗?

【问题讨论】:

    标签: actionscript-3 flash actionscript flash-cs5


    【解决方案1】:

    我假设您的 random_genotype_initialisation() 函数中有一个未定义的值。你是对的,你在 as3 中调用一个函数,就像在 java/c/c++/c#/js/etc 中一样。

    sn-p 有点错误,因为您将 replcate_new_generation 的结果存储到 rep,但这是一个 void 函数,因此 rep 将是 void,因此没有 call():

    var rep = replicate_new_generation();//rep = void at this point
    rep.call();//call does not exist for rep
    

    你的意思是?

    var rep:Function = replicate_new_generation;
    rep.call();
    

    等同于:replicate_new_generation(); 如果错误是在函数内产生的,也许你应该发布正文 函数呢?

    【讨论】:

    • 我的错误,似乎我试图调用的方法不能简单地单独调用,我必须调用另一个包含对上述方法的调用的方法。不过谢谢你的回答!感谢您的帮助。
    • “不能简单地单独调用”是什么意思?函数声明不会调用自身。另外,很高兴这有帮助,请随意投票/标记您认为合适的:)
    【解决方案2】:

    C# 与 AS3 非常相似,我不知道您要做什么,也不知道为什么您的代码不起作用,因为您没有提供一个很好的示例。但是你可以直接调用函数,只要它可以以任何正常的方式访问。

    比如说,在一个类中你有:

    class Boo {
        private function foo():void {
             trace("bar");
        }
    
        public function foobar():void {
            foo();
        }
    }
    
    class FoobarCaller {
        public function FoobarCaller (){
            var asdf:Boo = new Boo();
            asdf.foobar();
        }
    }
    

    这很有效,就像在 C# 或任何其他“标准编码语言”中一样。但是,如果没有更好的问题,就不可能说出你做错了什么

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      • 2022-07-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2016-11-29
      • 2014-05-10
      相关资源
      最近更新 更多