0

私は 2 つのクラスを持っています。別のクラスのテキストフィールドからクラスの変数またはプロパティにアクセスし、すべてのフレームで更新したいと考えています。これら2つのクラスのコードは次のとおりです。非常に単純ですが、私の最初のプロジェクトとして、問題が発生しています。GametextField.asクラスのRoadRun.asクラスの場合、レベルプロパティに単にアクセスするだけです

package
{
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import flash.events.TimerEvent;
import flash.utils.Timer;

public class RoadRun extends MovieClip
{

    public var carHit:Boolean = false;
    public var roadWidth:Number;
    public var roadHeight:Number;
    public var speed:Number = .5;
    private  var  m_level:Number = 1;
    private var levelSpeed:Number= speed * level ;

    public function RoadRun()
    {
        this.addEventListener(Event.ADDED_TO_STAGE, added); 
    }

    private function added(event:Event):void
    {
        roadHeight = this.height;
        roadWidth = this.width;
        addEventListener(Event.ENTER_FRAME, move);  
    }


    private function move(event:Event):void
    {
        //trace(m_level);


        m_level = m_level + 0.1;
        if(carHit == false)
        {


            this.y += speed;
            speed++;
            if(speed >= 10)
            {
                speed = 10;             
            }


            if(this.y >= 400)
            {
                this.y = this.height - this.height - this.height; // this.y = 400;
            }

        }
        else if(carHit == true)
        {

                this.y += speed;
                this.speed -= .1;
                if(this.y >= 400)
                {
                    this.y = -400;
                }
                this.y = this.y;
                if(this.speed <= 0.0)
                {
                    speed = 0;
                }
        }

    }
    public function get level():Number
    {
        return this.m_level ;
    }
}

}

そして、ここでアクセスしたいと思います。

package
{


import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
import flash.text.TextField;


public class GameTextField extends MovieClip
{

    public var score:Number = 0;
    private var road:RoadRun = new RoadRun();
    public  var level:Number;
    private var scoreField:TextField = new TextField();

    public function GameTextField()
    {   
        addEventListener(Event.ADDED_TO_STAGE, added);              
    }


    private function added(event:Event):void
    {


            scoreField.background = true;
            scoreField.height = 20;
            scoreField.width = stage.stageWidth;
            scoreField.backgroundColor =  0x000000 ;
            scoreField.textColor = 0xFFFFFF;
            scoreField.y = 0;
            scoreField.x = 0;
            addChild(scoreField);
            addEventListener(Event.ENTER_FRAME, update);        
    }

    private function update(event:Event):void
    {       
            trace(road.level)

            scoreField.text = "Score = " + String(score) + "  Level = " + String(level)  ;              
    }
}
}

さて、すべてが完璧に機能していますが、レベルは GameTextField クラスで更新されていません。RoadRun Class では問題ありませんが (trace() ステートメントで追跡しました。ここでは、

! http://i1363.photobucket.com/albums/r711/fakhar121/GameScreen_zps75a4dc09.png

4

2 に答える 2

1
private function update(event:Event):void
{       
    scoreField.text = "Score = " + String(score) + "  Level = " + String(level)
            + "  Speed = " + road.speed + "  Road Width = " + road.roadWidth;
}
于 2013-10-15T19:23:13.380 に答える