2016-12-03 35 views
1

HaxeFlixelの機能を学習するための基本的なゲームを構築していて、PlayStateのゲッター/セッタープロパティを持つ変数をMenuStateから呼び出したいとします。それはそのことを行う返すMS変数でHaxeFlixel:別のクラスのgetter/setter変数を呼び出す方法

class MenuState extends FlxState 
{ 
    @:isVar public var myVar(get, null):Bool; 

    public function get_myVar():Bool 
    { 
     return myVar; 
    } 
} 

class PlayState extends FlxState 
{ 
    private var _foo:Bool; 

    override public function create():Void 
    { 
     // var ms = new MenuState; doing it like this doesn't return anything 
     _foo = MenuState.get_myVar(); 
     if (_foo) 
     { 
      // do this thing 
     } 
     else 
     { 
      // do that thing 
     } 
    } 
} 

、私はエラーClass<MenuState> has no field get_myVarを取得し、それなし:コードは次のようになります。おそらくコードの記述方法ではないと思いますが、現時点では動作させようとしています。基本的に私がやっているのは、MenuStateにPlayStateが書き込むことができない変数を書き込むことです。それをどうやってやりますか? MenuState

答えて

1

myVarとgetter関数コード内でstaticではありませんので、あなたはMenuState.get_myVar()のようにそれらにアクセスすることはできません。私はmyVar静的にあなたの問題の解決策になると思う。

get_myVar()に直接電話する必要はありません。ゲッターはMenuStateの外側にあるmyVarにアクセスするたびに呼び出されます。 trace("message");get_myVarに追加してテストできます。

0

コンストラクタ関数(例:public function new())を使用してそのインスタンスを作成する必要があります。このため、通常、コンストラクタ関数を使用してvarに対して別のclass.hxを作成し、そのインスタンスをプレイステートで作成することが最善です。

そうでなければ、私はその後、例えば、あなたのメインパッケージにReg.hxのようなものと呼ばれる新しいクラスを作成し、共有する必要がVARSを保存するために、レジストリクラスを作成します。

package; 

//imports etc. 

class Reg { 

    public static var myVar:Bool; 
} 

その後、あなただけの必要あなたが望むどんなクラスにもimport Regへとあなたはそこにアクセスすることができます。私はそれをあたかもそのようにするのが好きです!

関連する問題