2011-12-18 4 views
2

私はXNA C#でかなり新しく、数秒後に何かをするXNA C#でタイマーを作成する方法を知りたいと思います。私は私が必要なものありませんが、私はXNA C#でそれを行う方法がわからないことa Flash tutorialを見てきました何かをするタイマーを作成するには?

私は私のプロジェクトの一定期間内の点滅モデルを作成するためにタイマーを使用しようとしている

。したがって、私はタイマーをどのように始めるべきか、タイマーは私のモデルの点滅をどのようにトグルするのかを知る必要があります。

ありがとうございました。これは私がそれを行う方法である

+1

にこれは便利かもしれません:http://stackoverflow.com/questions/2795693/how-does-xna-timing-work –

答えて

2

ような何かをしていた後、下記のアップデートで

float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds; 

はその後

float timer = 5.0f; // Five seconds 
のよう秒間の変数を持っています

その後、更新

timer -= elapsedTime 

if(timer <= 0) 
{ 
    // Hanlde the blink here 
    timer = 5.0f; // Reset timer 
} 
+0

こんにちは、マイク、ご返信いただきありがとうございます。もし私がそれを必要としないなら、タイマーを止めるにはどうすればいいですか?そして、私がそれを必要とするときに、私はどのようにタイマーを始めるのですか? – Zainu

+0

こんにちはマイク、ありがとう、私は停止し、別のブール値を作成してタイマーを開始する方法を考え出した。 – Zainu

+0

ちょっと別の質問ですが、私のモデルに透明な効果を与える方法を教えていただけますか?私は – Zainu

2

...

私は、トリガ動作の基本クラスを持っている、と私はトリガーを継承するタイマー...

//--------------------------------------------------------------------------------------------------------------------- 
    public class TriggerArgs 
    { 
     public AstroObject obj; 
    } 

    //--------------------------------------------------------------------------------------------------------------------- 
    public delegate void FireAction(AstroObject sender, TriggerArgs args); 

    //--------------------------------------------------------------------------------------------------------------------- 
    public interface IFireable 
    { 
     void Fire(AstroObject sender, TriggerArgs args); 
    } 

    //--------------------------------------------------------------------------------------------------------------------- 
    //--------------------------------------------------------------------------------------------------------------------- 
    public abstract class Trigger : AstroObject 
    { 
     public Action Fired; 

     public List<FireAction> Actions; 
     protected abstract void CheckConditions(float Seconds); 
     protected bool IsFired; 

     public bool RearmOnFire = false; 

     //--------------------------------------------------------------------------------------------------------------------- 
     protected override void LocalCreate(out int UpdateOrder) 
     { 
      UpdateOrder = Orders.Update.Trigger; 
      IsFired = false; 
     } 

     //--------------------------------------------------------------------------------------------------------------------- 
     protected override void LocalDie() { } 

     //--------------------------------------------------------------------------------------------------------------------- 
     public sealed override void Update(float Seconds) 
     { 
      CheckConditions(Seconds); 
     } 

     //--------------------------------------------------------------------------------------------------------------------- 
     protected void Fire(TriggerArgs args) 
     { 
      if (IsFired) return; 

      foreach (FireAction f in Actions) f.Invoke(this, args); 

      if (Fired != null) Fired(); 

      IsFired = !RearmOnFire; 
     } 

     //--------------------------------------------------------------------------------------------------------------------- 
     public override void Render(Microsoft.Xna.Framework.Color color) { } 
    } 

    //--------------------------------------------------------------------------------------------------------------------- 
    //--------------------------------------------------------------------------------------------------------------------- 
    public class TimeTrigger : Trigger 
    { 
     public float Interval; 
     public float Elapsed; 

     //--------------------------------------------------------------------------------------------------------------------- 
     protected override void LocalCreate(out int UpdateOrder) 
     { 
      base.LocalCreate(out UpdateOrder); 
      Elapsed = Interval; 
     } 

     //--------------------------------------------------------------------------------------------------------------------- 
     public void Start() { Elapsed = Interval; IsFired = false; } 

     //--------------------------------------------------------------------------------------------------------------------- 
     protected override void CheckConditions(float Seconds) 
     { 
      if (IsFired) return; 

      Elapsed -= Seconds; 

      if (Elapsed <= 0) 
      { 
       Elapsed = Interval; 
       Fire(null); 
      } 
     } 
    } 
関連する問題