0

したがって、私のゲームのメニューは別の .fla ファイルにあり、そのようなローダーを使用してメニューをゲームにロードしました。

package  {
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.DisplayObject;
import flash.display.Stage;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.ui.Mouse;
import flash.media.Sound;
import flash.media.SoundChannel;
import flash.text.TextFormat;
import flash.text.TextField;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.system.LoaderContext;
import flash.display.Sprite;
import flash.net.Socket;
import caurina.transitions.Tweener;


public class Main extends MovieClip {

public static var gameLayer:Sprite = new Sprite;
public static var endGameLayer:Sprite = new Sprite;
public static var menuLayer:Sprite = new Sprite;

public var gameTime:int;
public var levelDuration:int;

public function Main()
{
    addChild(gameLayer);
    addChild(endGameLayer);
    addChild(menuLayer);

    var myMenu:Loader = new Loader();
    var url:URLRequest = new URLRequest("Menu.swf");
    myMenu.load(url);
    myMenu.contentLoaderInfo.addEventListener(Event.COMPLETE, menuLoaded);

    function menuLoaded(event:Event):void
    {
        menuLayer.addChild(myMenu.content);
    }

    playBtn.addEventListener(MouseEvent.CLICK, startGame);
}



public function startGame(e:Event)
{
    // Code to remove the menu (menuLayer.removeChild?)
    // Code here to start timers etc
}

ボタンのインスタンス名を設定しましたが、 のようなことをしようとするとmenuLayer.playBtn.addEventListener(MouseEvent.CLICK, startGame);、 というメッセージが表示されますAccess of undefined property playBtn

ここで、Menu.fla を再確認しましたが、間違いなくボタンにインスタンス名を付けましたplayBtnが、機能していません。何か助けてください。私が見逃したのは本当に明らかなことかもしれませんが、何がわからないのですか。

編集:別の方法(メニューをムービークリップに変換する)を試していますが、正確に行う方法は100%わかりません. 私が持っているコードは次のとおりです。

public class Main extends MovieClip {

var mainMenu:menuMain = new menuMain;
// Other variables

 public function Main()
   {
        addChild(gameLayer);
        addChild(endGameLayer);
        addChild(menuLayer);

        menuLayer.addChild(mainMenu);
        mainMenu.addEventListener(Event.COMPLETE, menuLoaded);
   }

   function menuLoaded(event:Event):void
   {
         //var mainMenu:LoaderInfo = event.currentTarget as LoaderInfo;
         //var menuInstance:MovieClip = menuLayer.getChildAt(0) as MovieClip;

         // now you can actually add the listener, because the content is actually loaded
        mainMenu.playBtn.addEventListener(MouseEvent.CLICK, startGame);
   }

    public function startGame(e:Event)
    {
       // Code to execute timers etc.
    }
4

1 に答える 1