0

以下は、FlashBuilder4.5とAIRSDK3.0から構築されたMXMLコードです。addTextStarlingフレームワークを使用して2Dアニメーションを作成し、の新しいインスタンスを作成せずに関数を呼び出すにはどうすればよいGameですか?

main.mxmlはメインアプリケーションです。

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       applicationComplete="windowedapplication1_applicationCompleteHandler(event)"
                       backgroundAlpha="0" showStatusBar="false" height="700" frameRate="60" width="800">
    <fx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import starling.core.Starling;

            private var mStarling:Starling;

            protected function windowedapplication1_applicationCompleteHandler(event:FlexEvent):void
            {

                stage.scaleMode = StageScaleMode.NO_SCALE;
                stage.align = StageAlign.TOP_LEFT;
                this.y=0;

                mStarling = new Starling(Game, stage);
                mStarling.start();
            }

            private function gaa():void {
                //How to access addText() in Games.as?
            }

        ]]>
    </fx:Script>
    <s:Button x="693" y="19" label="Add Text" click="gaa()"/>

</s:WindowedApplication>

Games.asは、スプライトを作成するパッケージです。

package 
{
    import scenes.Scene;
    import starling.display.Button;
    import starling.display.Image;
    import starling.display.Sprite;
    import starling.events.Event;
    import starling.textures.Texture;

    public class Game extends Sprite
    {
        private var mMainMenu:Sprite;
        private var mCurrentScene:Scene;

        public function Game()
        {
            var bg:Image = new Image(Assets.getTexture("Background"));
            addChild(bg);

            mMainMenu = new Sprite();   //create new sprite
            addChild(mMainMenu);

        }
        public function addText():void {
            var logo:Image = new Image(Assets.getTexture("Logo"));  //add logo
            logo.x = int((300 - logo.width) / 2);
            logo.y = 50;
            mMainMenu.addChild(logo);
        }
    }
}
4

1 に答える 1

0

Gameの新しいインスタンスを作成せずにaddText関数を呼び出すにはどうすればよいですか?

クラスのインスタンスを作成せずにクラスのメソッドを呼び出すには、静的メソッドを使用する必要があります。このようなもの:

    public static function addText():void {
        var logo:Image = new Image(Assets.getTexture("Logo"));  //add logo
        logo.x = int((300 - logo.width) / 2);
        logo.y = 50;
        mMainMenu.addChild(logo);
    }

次に、次のようにメソッドを呼び出すことができます。

Games.addText()

もちろん、記述されているように、メソッドはエラーをスローします。mMainMenuメソッドで定義されていないためです。静的メソッド内のクラスのインスタンス変数にアクセスすることはできません。

于 2011-10-08T19:11:10.700 に答える