본문 바로가기
프로그래밍

마우스 이벤트 처리하기

by 건우아빠유리남편 2009. 7. 9.
반응형

키보드도 되겠다.. 이젠 마우스로 ㄱㄱ

플래시로 자주 만드는 마우스 따라다니는 그림을 한번 만들어 볼까요..

 

그런 의미에서 이번엔 그림을 바꿔볼까 합니다..

 

 

07 Imagine Cup Korea!

 

 

마우스 클래스

마우스 정보를 가지고 있습니다.

static IntPtr WindowHandle

마우스포인터를 지정한다.

static MouseState GetState()

마우스상태를 가지고 온다.

 

마우스 상태 구조체

마우스 상태정보를 가지고 있습니다.

ButtonState LeftButton

왼쪽마우스버튼의 버튼상태

ButtonState MiddleButton

중앙마우스버튼의 버튼상태

ButtonState RightButton

오른쪽마우스버튼의 버튼상태

int ScrollWheelValue

휠 의 scroll 정도

int X

X좌표

ButtonState XButton1

추가마우스1 버튼의 버튼상태

ButtonState XButton2

추가마우스 2버튼의 버튼상태

int Y

Y좌표

 

버튼정보 열거체

버튼 상태를 표시합니다.

Press

누르기

Release

떼기

 

 

소스코드 편집

Game1.cs를 편집한다.

 

 Game1.cs

using System;

using System.Collections.Generic;

using Microsoft.Xna.Framework;

using Microsoft.Xna.Framework.Audio;

using Microsoft.Xna.Framework.Content;

using Microsoft.Xna.Framework.Graphics;

using Microsoft.Xna.Framework.Input;

using Microsoft.Xna.Framework.Storage;

 

//마우스이벤트를 처리한다.

namespace XnaImage {

    public class Game1 : Microsoft.Xna.Framework.Game {

        //시스템

        private GraphicsDeviceManager graphics; //그래픽스

        private ContentManager        content; //컨텐츠

        private SpriteBatch           spBatch; //스프라이트 군

        private Texture2D             texture; //텍스쳐

 

        //위치

        private int x = 100; //X좌표

        private int y = 100; //Y좌표

 

        //constructor

        public Game1() {

            //그래픽스와 컨텐츠 지정

            graphics = new GraphicsDeviceManager(this);

            content  = new ContentManager(Services);

 

            //Update()를 초당 20회 부르도록 설정

            IsFixedTimeStep = true;

            TargetElapsedTime = new TimeSpan(500000); //50밀리초에 한번          

        }

 

        //초기화

        protected override void Initialize() {

            base.Initialize();

        }

 

        //그래픽스 컨텐츠 읽어오기

        protected override void LoadGraphicsContent(bool loadAllContent) {

            if (loadAllContent) {       

                spBatch = new SpriteBatch(graphics.GraphicsDevice);

                texture = content.Load<Texture2D>("ImagineCup"); //Assent Name지정

            }

        }

 

        //그래픽스 컨텐츠 놓아주기

        protected override void UnloadGraphicsContent(bool unloadAllContent) {

            if (unloadAllContent == true) {

                content.Unload();

            }

        }

 

        //업뎃

        protected override void Update(GameTime gameTime) {

            //마우스로 XY좌표 얻어오기

            MouseState mouseState = Mouse.GetState();

            x=mouseState.X;

            y=mouseState.Y;

 

            //베이스 업뎃

            base.Update(gameTime);

        }

 

        //그리기

        protected override void Draw(GameTime gameTime) {

            //배경색 지정

            graphics.GraphicsDevice.Clear(Color.Black);

 

            //텍스쳐 그림

            spBatch.Begin();

            Vector2 pos = new Vector2(x-90,y-5); //좌표지정

            spBatch.Draw(texture,pos,Color.White);

            spBatch.End();

 

            //베이스 그리기

            base.Draw(gameTime);

        }

    }

}

 

그럼 검은 바탕에 이매진컵 로고가 마우스를 따라 다니는것을 보실 수 있습니다.

그럴듯 한가요?  검은 바탕..ㄷㄷ


반응형

'프로그래밍' 카테고리의 다른 글

XNA Framework 정리  (0) 2009.07.09
데이타를 스토리지에 저장하기  (0) 2009.07.09
키 이벤트 제어하기  (0) 2009.07.09
이미지에 애니메이션 붙이기  (0) 2009.07.09
이미지 파일 읽어오기  (0) 2009.07.09

댓글