我有一个类,我的文档类,名为SilkRoadTweeter.as 我还有一个名为User.as的类 在我的User类中,我需要调用一个名为nonce()的方法 我试过这个,
trace(SilkRoadTweeter(root).nonce());
但是我收到了错误,
TypeError: Error #1009: Cannot access a property or method of a null object reference.
答案 0 :(得分:1)
修改
我实际上忘记了最重要的一个,你可以发送事件!
//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") );
编辑结束
您应该在User类
中传递SilkRoadTweeter的实例例如:
//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();
}
如果将User类实例添加为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();
}
答案 1 :(得分:1)
你说nonce()函数在SilkRoadTweeter类中,你需要从User类中调用它。您必须具有对SilkRoadTweeter的引用才能调用其上的函数。错误是说它不知道SilkRoadTweeter是什么。在我看来,使用root来获取引用是混乱的,应该避免。我建议在创建User类时传递对它的引用。如果这不是一个选项,只要函数不需要访问SilkRoadTweeter的非静态属性,将SilkRoadTweeter类上的函数nonce()设置为static将解决您的问题。你说它只是返回一个生成的数字,所以我猜它不需要访问非静态属性。如果你仍然困惑,我可以进一步阐述我所说的话。
答案 2 :(得分:0)
在这种情况下,“ root ”可能为null。 尝试调试它来检查。
答案 3 :(得分:0)
尝试:
trace(root is SilkRoadTweeter)
我觉得你需要这样做:
trace((root.getChildAt(0) as SilkRoadTweeter).nonce());