0

ActionScript 3 でゲームを作成しています。メニューをレンダリングするメソッドを持つメニュー クラスがあります。Main クラスで Menu のインスタンスを作成し、メソッドを呼び出します。アプリケーションをデバッグすると、null 参照エラーが発生します。これは、メニュー クラスのコードです。

package
{
import flash.display.MovieClip;

import menucomponents.*;

public class Menu extends MovieClip
{
    public function Menu()
    {
        super();
    }

    public function initMenuComponents():void{
        var arrMenuButtons:Array = new Array();

        var btnPlay:MovieClip = new Play();
        var btnOptions:MovieClip = new Options();
        var btnLikeOnFacebbook:MovieClip = new LikeOnFacebook();
        var btnShareOnFacebook:MovieClip = new ShareOnFacebook()

        arrMenuButtons.push(btnPlay);
        arrMenuButtons.push(btnOptions);
        arrMenuButtons.push(btnLikeOnFacebbook);
        arrMenuButtons.push(btnShareOnFacebook);

        var i:int = 0;

        for each(var item in arrMenuButtons){
            item.x = (stage.stageWidth / 2) - (item.width / 2);
            item.y = 100 + i*50;
            item.buttonMode = true;

            i++;
        }
}
}
}

前もって感謝します。

4

1 に答える 1

0

あなたの問題は、for ループの実行時にまだステージが設定されていない可能性があります。次のことを試してください。

public class Main extends MovieClip { 
    public function Main() { 
        super(); 
        var menu:Menu = new Menu(); 

        //it's good practice - as sometimes stage actually isn't populated yet when your main constructor runs - to check, though in FlashPro i've never actually encountered this (flex/flashBuilder I have)
        if(stage){
            addedToStage(null);
        }else{
            //stage isn't ready, lets wait until it is
            this.addEventListener(Event.ADDED_TO_STAGE,addedToStage);
        }
    } 

    private function addedToStage(e:Event):void {
        menu.addEventListener(Event.ADDED_TO_STAGE,menuAdded); //this will ensure that stage is available in the menu instance when menuAdded is called.
        stage.addChild(menu); 
    }

    private function menuAdded(e:Event):void {
        menu.initMenuComponents(); 
    }
}
于 2012-11-13T22:08:36.603 に答える