일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 황광진
- 옴니아2
- 데브피아
- 서진호
- 윈도우폰7
- MIX10
- 윈도우폰
- 헤이맨
- 소년포비
- 스마트폰
- 거제도
- UX베이커리
- 김춘배
- windows mobile 6.5
- winmodev
- 실버라이트 코리아
- 훈스닷넷
- 신석현
- 신동혁
- 윈모데브
- 안드로이드
- 윈도데브
- 지승욱
- 루나네스
- 마이크로소프트
- 주신영
- 윈도우 모바일
- 쉐어포인트코리아
- 소년포비소프트
- 윈도우모바일
- Today
- Total
소년포비의 세계정복!!
소년포비의 XNA for Windows Phone 7 초보탈출 1탄!! 본문
안녕하세요 ^^
소년포비입니다. 요번에는 제가
Programming_Windows_Phone_7의 저자 찰스 페졸드의 책을 바탕으로
제 입맛에 맛게 여러분들에게 아주 부끄러운 실력이지만 XNA 강좌를
해드릴려고 합니다 ^^
당연히 페졸드 아저씨가 쓴 내용을 그대로 사용 할것입니다.
저두 아주 오랫만에 해보는거라 정확하게 설명드리기는 어렵구요 ^^
제가 아는 만큼 설명해 드리도록 하겠습니다.
PART 1 : “HELLO WORLD”
제일 중요한 부분이며 이게 제일 어려운듯하네요.
바로바로 헬로우 월드요...^^
자 그럼 아래 그림 처럼 프로젝트를 만들어 주시면 됩니다. ^^
그리고 이제 본격적으로 코드를 살려 보도록 하겠습니다.
아래 부분은 책의 처음에 있는 부분으로써
헬로우 월드를 찍는데 중요한 핵심 부분입니다.
// 여기는 먼가 담는거 갔죠?
Vector2 textSize = segoe14.MeasureString(text);
// 여긴 변수를 어디가 또 담죠?
Viewport viewport = this.GraphicsDevice.Viewport;
// 나름대로 담은 녀석들을 X,Y 좌표로 좀 구하는거 갔죠?
textPosition = new Vector2((viewport.Width - textSize.X) / 2,
(viewport.Height - textSize.Y) / 2);
위 부분은 아래 코드에서 어떻게 사용되는지 보여드리겠습니다.
그리고 또 자세한 설명도 아래 부분에서 해드리도록 하겠습니다. ^^
자 그럼 본격적으로 프로젝트를 만드신 풀 소스를 보시면서
이해하도록 하시죠 ^^
// GraphicsDevice에 접근할수 있도록 해주는 변수입니다.
GraphicsDeviceManager graphics;
// 이 객체는 2D, 3D 이미지를 복합적으로 그릴수 있도록 해주는 변수입니다.
SpriteBatch spriteBatch;
// 이부분은 머 말 않해도 아시죠?
string Test = "Windows Phone 7!! WinMoDev!!";
// 아래부분은 변수 선언부분입니다.
SpriteFont segoe14;
Viewport viewport;
// 초기 진입점입니다.
public Game1()
{
// GraphicsDevice를 쓰기 위해서 변수를 선업하는 부분입니다.
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
// Frame rate is 30 fps by default for Windows Phone.
// 실행되어질 부분에 대한 Frame rate설정을 하고 있는 부분입니다.
TargetElapsedTime = TimeSpan.FromTicks(333333);
}
// 해당 부분은 게임이 처음 시작할때 딱 1번 실행 되는 부분으로써
각종 변수 및 객체를 초기화 해주는 부분입니다.
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
// 프로그램이 시작되는 시점에 컨텐트를 읽기 위해서
한번 실행되는 메서드입니다.
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
viewport = this.GraphicsDevice.Viewport;
segoe14 = this.Content.Load<SpriteFont>("Segoe14");
Vector2 textSize = segoe14.MeasureString(Test);
textSize = new Vector2((viewport.Width - textSize.X) / 2,
(viewport.Height - textSize.Y) / 2);
}
// 해당 부분은 위의 부분과 비슷하지만 다른점이 프로그램이 끝나는
시점에 한번 실행 되게 됩니다.
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}
// 해당 부분은 프로그램의 핵심 부분으로써 Update와 Draw를 번갈아 가면서
루프를 돌면 프로그램이 끝날때까지 호출되는 부분입니다.
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
// TODO: Add your update logic here
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
// 프로그램 화면에 CornflowerBlue색을 뿌리도록 하는 부분입니다.
GraphicsDevice.Clear(Color.CornflowerBlue);
// 요녀석은 블렌드의 시작하는것과 비슷하죠? ^^
spriteBatch.Begin();
// 프로그램 화면에 뿌려주기 위해서 넣는 부분입니다.
1. segoe14 = 요녀석은 바로 SpriteFont 입니다.
2. Test = 위에 보이시죠 먼지요? ^^
3. textSize = 사이즈를 말합니다. 위에 좌표 XY놀이 한거요 ^^
4. Color.Black = 글자 색갈을 말합니다.
spriteBatch.DrawString(segoe14, Test, textSize, Color.Black);
spriteBatch.End();
// TODO: Add your drawing code here
base.Draw(gameTime);
}
이렇게 하시면 정말 간단한 헬로우 월드를 찍기 위한 이해를
마치신 상태입니다.
자 그럼 빌드 화면을 보시기 전에
아까말한 SpriteFont를 만들기 위해서는
아래 그림을 참고하여 만드시면 되겠습니다.
자 그럼 이제 에러나는게 없이 아주 깔끔하게 하게 완료가 된것입니다.
그리고 제가 위에 소스코드에서 설명해드린
프로그램 사이클을 한번 정리해 드릴게요 ^^
<프로그램 라이프사이클>
자 어느정도 이해가 되셨나요?
저두 이해하느라 힘들었네요 ^^
자 그럼 빌드 하셔서 잘 되나 확인해보세요 ^^
아 그리고.....SpriteFont부분에 보시면 글자 크기나 기타
다른 부분을 고치실수 있습니다.
자 그럼 위의 그림처럼 잘 나오시죠?
오오오....신기하시죠 ^^
자 여러분은 이제 아주 기본이 되는
프로그램의 라이프사이클과 함께 기본적인 XNA을
알게 되신걸 축하드립니다 ^^
그럼 다음 시간에는 좀더 응용해서 해보도록 하겠습니다.
다음시간까지 연습하세요~~~
'윈도우폰 세상 > XNA for WP7' 카테고리의 다른 글
소년포비의 XNA for Windows Phone 7 초보탈출 2탄!! (0) | 2011.03.13 |
---|---|
windows phone7 XNA 사운드 & 뮤직!! (0) | 2010.09.03 |
XNA란??? (0) | 2009.11.12 |