私はactionScriptに問題があります。私はドキュメントクラス(メイン)内のメソッドにアクセスするために単純な1行のコードを使用しようとしていますが、エラーが発生するたびに発生します。ステージ上で同じコードをmovieClipで試してみましたが、うまく動作します。AS3 Mainクラス内のメソッドに別のクラスからアクセスします。エラー?
メイン・クラスはFLAにリンク:
package {
import flash.display.*;
import flash.events.*;
public class Main extends MovieClip {
public function Main() {
if (stage) {
init();
}
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
button.addEventListener(MouseEvent.CLICK,_click);
}
private function _click(e:MouseEvent):void {
var l:Leecher = new Leecher();
l.leech();
}
public function callMe():void {
trace("hey nice work");
}
}
}
リーチャクラス:
package {
import flash.display.*;
public class Leecher extends MovieClip {
public function leech():void
{
trace(" leech function ");
Main(parent).callMe(); // output null object
Main(root).callMe(); // output null object
Main(Main).callMe(); // output null object
}
}
}
同じコードが、上のボタンにリンクされているクラスステージ
package
{
import flash.display.*;
import flash.events.*;
public class Button extends MovieClip {
public function Button() {
this.addEventListener(MouseEvent.CLICK,r_click);
}
private function r_click(e:MouseEvent):void {
var l:Leecher = new Leecher();
l.leech();
Main(parent).callMe(); // hey nice work
Main(root).callMe(); // hey nice work
Main(Main).callMe(); // output null object
}
}
}
** DisplayObject.parent **と** DisplayObject.root **は定義されています**問題の** DisplayObject **がステージの表示リストにアタッチされている場合のみ**** Button **インスタンスが添付されて動作します。** Leecher **インスタンスは何にも関連付けられていません。**親**と** root **は両方とも** null **です。次に、** Main(anything)**は型キャストであり、クラス自体はインスタンスではないので、** Main(Main)**は常に** null **を与えます。 – Organis