0

1 つの大きなファイルを複数のファイルに分割してクリーンアップしたところ、問題が発生しました。

main.as、character.as、camera.as があります。

私がやろうとしているのは、後でそのクラスに設定した別のクラスから変数にアクセスすることです。私が何を意味するかをお見せします。

私のmain.as imから各クラスをロードし、それらを子として追加して、画面に表示されるようにします。

    public function buildGame()
    {
        var loadMap:Sprite = new nf_MapBuilder();
        var xChar:Sprite = new nf_Character();
        var xCam:Sprite = new nf_Camera();
        var UserControl:nf_UserControl = new nf_UserControl();

        addChild(loadMap);
        addChild(xChar);
        addChild(xCam);
        addChild(UserControl);
    }

必要に応じてすべてが画面に表示されます。次に、私の character.as に移動します。

package as3
{
import flash.display.Sprite;
import flash.events.Event;

public class nf_Character extends Sprite
{
    public var character_pos:Array = new Array();
    public var character_is_moving:Boolean = false;
    public var character_x_dir:int = 0;
    public var character_y_dir:int = 0;
    public var character:hero = new hero();

    public function nf_Character()
    {
        addEventListener(Event.ADDED_TO_STAGE,xCharLoad);
    }

    public function xCharLoad(e:Event)
    {
        character_pos = [2,2];
        character.x=64*(character_pos[1]);
        character.y=64*(character_pos[0]);
        addChild(character);
    }
}
}

問題があります。camera.as で使用するには、character.as で設定した変数を使用する必要があります。

package as3
{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Rectangle;
import flash.display.StageScaleMode;

import as3.nf_Character;

public class nf_Camera extends Sprite
{
    private var xChar:nf_Character = new nf_Character();

    //Camera variables
    var stageW2:Number;
    var stageH2:Number;
    var view:Rectangle;

    public function nf_Camera()
    {
        addEventListener(Event.ADDED_TO_STAGE,xCamGo);
    }

    public function xCamGo(e:Event):void
    {
        trace("Camera pos - " + xChar.x + " " + xChar.character.y);

        view = new Rectangle(0,0,stage.stageWidth,stage.stageHeight)
        stageW2 = stage.stageWidth / 2 - 32;
        stageH2 = stage.stageHeight / 2 - 32;

        addEventListener(Event.ENTER_FRAME,CamView);
    }
    public function CamView(e:Event):void
    {
        view.x = xChar.character.x - stageW2;
        view.y = xChar.character.y - stageH2;
        scrollRect = view;
    }
}
}

すべてが1つの大きなファイルに含まれていたときは問題ありませんでしたが、クラスに変数を設定し、すべての関数からアクセスする必要がありましたが、今はちょっと混乱しています。誰も私がこれを行う方法を見ますか?

4

2 に答える 2