ゲーム大好きパソコンバカが興味を持ったものを綴るブログであります。プログラム、家庭用ゲーム、パソコン自作、ニコニコ動画、生活家電についての話題が中心になるかと思われます。前回のエントリーからだいぶ期間が空いてしまいましたね。前回の続きを何事もなかったかのように説明していきます。coveredByOtherScreen){}さて、SceneBaseクラスの更新関数ですが、ここでは画面遷移中の処理を実装していきます。otherScreenHasFocus;まずは自身のシーンフォーカスがあるかどうかのBOOL型を保持します。引数で指定されてきたものを自身で取得するだけです。移行が完全に終了した場合、SceneManagerから削除されるGameManagerRef.RemoveScene(this);}}自身の画面が終了フラグがTRUEの場合、トランスレーションOFFに状態を設定します。ここでUpdateTransition関数が呼ばれていますが、後で説明いたします。内容は画面遷移の処理とだけ画面遷移処理が完了した場合、RemoveSceneが呼ばれ、自身のシーンはスタックから削除されます。終了はしないんだが、他の画面が前にあるため、自身を非表示にするための処理となります。ここでもUpdateTransition関数が呼ばれています。画面移行中はTransitionOFF状態。移行完了するとHidden状態となります。SceneState.Active;}}上記二つの状態に該当しない場合、このシーンはアクティブ状態またはアクティブ準備中状態です。UpdateTransition関数の結果により状態をわけます。移行完了して自身がアクティブになれば、Active状態に設定します。更新関数内はこれだけです。Baseの処理となるため、各シーンの処理は各継承したソース内で行います。各シーンからこの基本となるUpdate関数を呼ぶっということで画面移行の手続きなどを行うことができるという流れとなります。direction){}さて次にさきほどUpdate関数内にて複数回登場した関数を実装します。この関数では、シーンが移行中であるか完了したかを判断する処理となります。time.TotalMilliseconds);}まずは引数で指定された移行完了までの秒数から移行位置を算出します。Zeroの場合は即完了位置となるため1が設定されます。Zero以外の場合は、gameTimeから移行完了タイムとの計算にて現在の移行位置を算出します。ElapsedGameTime→前回の更新から経過したゲーム時間の合計っとMSDNでは明記されています。移行位置を更新します。到達していない場合、まだ移行が行われている。true;引数で指定したdirectionを掛け合わせることで-1<0<1の値を完成させます。これにより、Activeへの移行の場合、transitionPosが0を下回ったかHiddenまたは削除される場合、transitionPosが1を上回ったかで移行完了となります。プロパティを設定する際に書いていたように1でOFF状態、0で完全ON状態となります。この値がAlpha値の計算に使用されるからです。画面の移行時間がゼロに設定されている場合は、すぐに削除されます。それ以外の場合、オフに移行してから終了するようにフラグを設定します。true;}}最後は画面が終了するときの準備関数を作成します。TransitionTimeが設定されていない場合、即削除されます。値が設定されていると先ほどのUpdate関数を何回か通ることになり、UpdateTransitionにて移行完了となるとシーンが削除されます。これでSceneBaseの作成は完了となります。次はこのSceneBaseを操作するSceneManagerを作成していきますよ~XNAをはじめる方へXNAゲームプロ...価格:3,654円(税込、送料別)↑XNAの基本的なゲームコーディングなどは上記の書籍で十分学ぶことができます。私もこの本は初心者におすすめだと感じます。リファレンス本とまではいきませんが、参考になると思います。Uをフラゲで買ってきました。2.0Seesaaブログ。