XNA游戏开发中横竖屏的设置

移动开发 游戏开发
手机设备里面,会有横竖屏的状态,一般会有3种情况,一个是竖屏,一个是右横屏,一个是左横屏,横屏的设置是通过GraphicsDeviceManager类的SupportedOrientations属性来设置的,GraphicsDeviceManager类在XNA类库介绍中提到的该类型是非常重要的。

手机设备里面,会有横竖屏的状态,一般会有3种情况,一个是竖屏,一个是右横屏,一个是左横屏。XNA游戏开发中,横屏的设置是通过GraphicsDeviceManager类的SupportedOrientations属性来设置的,GraphicsDeviceManager类在XNA类库介绍中提到的该类型是非常重要的。它为开发者提供方法来管理目标设备的显卡资源。简单地说就是调用显卡的一个接口,该对象的GraphicsDevice属性代表当前目标设备的显卡。

代码示例:

 

using System;  
using System.Collections.Generic;  
using System.Linq;  
using Microsoft.Xna.Framework;  
using Microsoft.Xna.Framework.Audio;  
using Microsoft.Xna.Framework.Content;  
using Microsoft.Xna.Framework.GamerServices;  
using Microsoft.Xna.Framework.Graphics;  
using Microsoft.Xna.Framework.Input;  
using Microsoft.Xna.Framework.Input.Touch;  
using Microsoft.Xna.Framework.Media;  
 
namespace SlXnaApp1  
{  
    /// <summary> 
    /// This is the main type for your game  
    /// </summary> 
    public class Game1 : Microsoft.Xna.Framework.Game  
    {  
        GraphicsDeviceManager graphics;  
        SpriteBatch spriteBatch;  
        SpriteFont rotationFont;  
 
        public Game1()  
        {  
            graphics = new GraphicsDeviceManager(this);  
            Content.RootDirectory = "Content";  
 
            // Frame rate is 30 fps by default for Windows Phone.  
            TargetElapsedTime = TimeSpan.FromTicks(333333);  
            //添加横屏和竖屏的支持  
            graphics.SupportedOrientations = DisplayOrientation.Portrait | DisplayOrientation.LandscapeLeft | DisplayOrientation.LandscapeRight;  
        }  
 
        /// <summary> 
        /// Allows the game to perform any initialization it needs to before starting to run.  
        /// This is where it can query for any required services and load any non-graphic  
        /// related content.  Calling base.Initialize will enumerate through any components  
        /// and initialize them as well.  
        /// </summary> 
        protected override void Initialize()  
        {  
            // TODO: Add your initialization logic here  
 
            base.Initialize();  
        }  
 
        /// <summary> 
        /// LoadContent will be called once per game and is the place to load  
        /// all of your content.  
        /// </summary> 
        protected override void LoadContent()  
        {  
            // Create a new SpriteBatch, which can be used to draw textures.  
            spriteBatch = new SpriteBatch(GraphicsDevice);  
 
            // TODO: use this.Content to load your game content here  
            rotationFont = Content.Load<SpriteFont>("rotationFont");  
        }  
 
        /// <summary> 
        /// UnloadContent will be called once per game and is the place to unload  
        /// all content.  
        /// </summary> 
        protected override void UnloadContent()  
        {  
            // TODO: Unload any non ContentManager content here  
        }  
 
        /// <summary> 
        /// Allows the game to run logic such as updating the world,  
        /// checking for collisions, gathering input, and playing audio.  
        /// </summary> 
        /// <param name="gameTime">Provides a snapshot of timing values.</param> 
        protected override void Update(GameTime gameTime)  
        {  
            // Allows the game to exit  
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)  
                this.Exit();  
 
            base.Update(gameTime);  
        }  
 
        /// <summary> 
        /// This is called when the game should draw itself.  
        /// </summary> 
        /// <param name="gameTime">Provides a snapshot of timing values.</param> 
        protected override void Draw(GameTime gameTime)  
        {  
            GraphicsDevice.Clear(Color.CornflowerBlue);  
 
            // TODO: Add your drawing code here  
            spriteBatch.Begin();  
            spriteBatch.DrawString(rotationFont, "你现在手机的摆放状态是:" + Window.CurrentOrientation.ToString() + ".", new Vector2(50, 50), Color.White);  
            spriteBatch.End();  
 
            base.Draw(gameTime);  
        }  
    }  

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70.
  • 71.
  • 72.
  • 73.
  • 74.
  • 75.
  • 76.
  • 77.
  • 78.
  • 79.
  • 80.
  • 81.
  • 82.
  • 83.
  • 84.
  • 85.
  • 86.
  • 87.
  • 88.
  • 89.
  • 90.
  • 91.
  • 92.
  • 93.
  • 94.
  • 95.
  • 96.
  • 97.
  • 98.
  • 99.
  • 100.

 

原文链接:http://www.cnblogs.com/linzheng/archive/2012/04/15/2450274.html

【编辑推荐】

  1. 爆料:C#和XNA可以在iOS和Android平台使用
  2. 详解Windows Phone XNA 4.0 3D游戏开发
责任编辑:王晓东 来源: 博客
相关推荐

2012-05-28 15:55:47

XNA 重力感应

2010-09-08 11:26:26

Windows PhoXNA 4.0 3D游戏开发

2010-08-10 09:11:12

Windows PhoNXA

2013-05-23 10:51:28

Android开发移动开发横竖屏切换

2013-08-21 11:15:54

iOS横竖屏方案

2017-07-25 09:55:10

iOS横竖屏旋转

2016-09-18 10:51:01

JavascriptHtml5移动应用

2011-07-29 10:21:03

iPad 横竖屏 切换

2012-05-25 15:20:38

XNA

2011-06-08 15:05:43

J2ME

2013-07-29 05:04:19

Cocos2dx横屏竖

2010-01-25 15:23:12

Android横竖屏切

2013-05-20 16:12:23

2012-12-13 13:27:29

Corona SDK

2024-09-23 10:00:00

Python游戏开发

2010-03-08 19:03:23

Python脚本

2013-05-16 15:08:33

2009-07-01 09:27:36

触摸屏驱动WinCE

2011-08-24 13:56:12

Lua游戏

2013-06-27 13:46:41

游戏开发
点赞
收藏

51CTO技术栈公众号