2010-11-04 74 views
0

我有一个类,我的文档类,称为SilkRoadTweeter.as 我也有一个名为User.as 类在我的User类,我需要调用一个方法叫做随机数() 我已经试过了,如何从当前课程中的其他课程调用方法。 AS3

trace(SilkRoadTweeter(root).nonce()); 

但我得到的错误,

TypeError: Error #1009: Cannot access a property or method of a null object reference. 
+2

你应该添加更多关于你的课程的细节。 – 2010-11-04 16:08:51

回答

0

在这种情况下, “” 可能是零。 尝试调试它来检查。

+0

我觉得这很愚蠢,但我实际上并不知道根是什么。 – 2010-11-04 16:44:18

+0

我正在学习大学的行为脚本,并且我使用了类似trace的东西(SilkRoadTweeter(root).nonce()); – 2010-11-04 16:45:09

+0

约旦的答案是最适合你的。静态是要走的路。 – ansiart 2010-11-05 19:59:46

1

编辑

我其实忘了最重要的一个,你可以派遣en事件!编辑

 //In the Document class 
    var user:User = new User(); 
    user.addEventListener("nonce" , nonceEventListener); 

    //define your listener 
    private function nonceEventListener(event:Event):void 
    { 
     user.result = this.nonce(); 
    } 

    //In the User class 
    public function result(value:Number):void 
    { 
     //here you deal the generated Number 
     } 

     //somewhere in the Class 
    this.dispatch(new Event("nonce")); 

你应该通过你SilkRoadTweeter的实例在User类

例如:

//In the Document class 
    var user:User = new User(this); 

    //In the User class 
    var srt:SilkRoadTweeter; 

    public function User(srt:SilkRoadTweeter) 
    { 
     this.srt = srt; 
     srt.nonce(); 
    } 

如果用户类的实例添加为一个孩子SilkRoadTweeter类,你也可以 做到这一点

//In the User class 
    var srt:SilkRoadTweeter; 

    public function User() 
    { 
     addEventListener(Event.ADDED , addedListener); 
    } 

    protected function addedListener(event:Event):void 
    { 
     srt = this.parent as SilkRoadTweeter; 
     srt.nonce(); 
    } 
+0

嘿,对不起,我不认为我很清楚。我需要调用nonce()和nonce()在文档类(SilkRoadTweeter.as)中,但我需要从其他类调用它User.as – 2010-11-04 16:36:51

+0

我即将去尝试现在。所有的nonce()都会返回一个生成的数字。有没有办法只是从用户调用nonce()并获取值? – 2010-11-04 16:50:30

+0

是的,用户对象被添加为SilkRoadTweeter的子节点 – 2010-11-04 16:51:47

0

尝试:

trace(root is SilkRoadTweeter) 

我都感觉你需要做的:

trace((root.getChildAt(0) as SilkRoadTweeter).nonce()); 
+0

trace(root是SilkRoadTweeter);追踪什么? – 2010-11-04 23:51:10

1

你说的随机数()函数是在SilkRoadTweeter类,你需要从用户调用它类。您必须具有对SilkRoadTweeter的引用才能调用它。错误是说它不知道SilkRoadTweeter是什么。在我看来,使用root获得参考很麻烦,应该避免。我建议在创建它时传递一个对User类的引用。如果这不是一个选项,只要函数不需要访问SilkRoadTweeter的非静态属性,在SilkRoadTweeter类中静态函数nonce()就可以解决您的问题。你说它所做的只是返回一个生成的数字,所以我猜测它不需要访问非静态属性。如果你仍然感到困惑,我可以详细阐述我所说的话。

+0

我将使nonce()成为一个静态函数。但是我还有另一个函数,我想在用户名为signRequest()的SilkRoadTweeter中调用,它在SilkRoadTweeter类中使用了很多不同的变量。那我该怎么做呢? – 2010-11-04 23:44:44

+0

如果你要在两个类之间进行很多函数调用,我建议在创建User类时引用它。在SilkRoadTweeter中创建User类的实例的代码如下所示:var user:User = new User(this);并且User类的构造函数将除了一个SilkRoadTweeter,您可以将其作为私有属性保存并用于进行函数调用。 – Jordan 2010-11-04 23:54:56