- 注册时间
- 2009-11-24
- 最后登录
- 2019-5-19
⑥精研
- 积分
- 1274

|

楼主 |
发表于 2010-10-3 01:19:53
|
显示全部楼层
那么今天来讲Graphics库。
说到Graphics库,最主要的就是Screen类了。它里面包含了很多静态的方法、属性和变量,都是游戏开发必不可少的。
类:Screen [
公有对象:
Background(Layer):背景层
Foreground(Layer):前景层
Message(Layer):消息层
Menu(Layer):菜单层
System(Layer):系统层
Initialize()(void):初始化
Cleanup()(void):清空
SetClientSize(int x, int y)(void):设置工作区大小
Update()(void):更新画面
FullScreen(bool):是否使用全屏模式
GameWindow(GameWindow):默认游戏窗体
ScreenWidth(int, readonly):屏幕宽度
ScreenHeigt(int, readonly):屏幕高度
ShowCursor(bool):是否显示鼠标指针
Title(string):游戏标题
]
其中
SetClientSize()、FullScreen、Title 只能在 Initialize 之前调用或赋值。
那么在游戏中如何去显示一张图片呢?
我们可以用Sprite来实现。
类:Sprite [
公有对象:
Render()(void):渲染当前的精灵(自动实现)。
Dispose()(void):注销当前的精灵。
BlendType:精灵的合成方式(未能实现)。
X、Left:精灵的X位置。
Y、Top:精灵的Y位置。
Width:精灵渲染时的宽度。
Height:精灵渲染时的高度。
Right:精灵的右侧的X位置。
Bottom:精灵的底下的X位置。
Hue:精灵的色调。
]
要显示图片,可以先生成一个精灵。
精灵的生成是需要层(Layer)的。
在Screen当中有了系统层的定义,那么这里我们直接调用就可以了。
比如,要在前景层显示一个叫做“a.png”的图片:- Sprite sprite = new Sprite("a.png", Screen.Foreground);
复制代码 这里有几点需要特别注意:默认支持的格式为:png、bmp、jpeg。
如果没有加扩展名就会自己寻找文件,顺序为png=>bmp=>jpeg。
构造函数有两次重载,第一次重载为- Sprite(string filename, Layer layer);
复制代码 第二次为值得注意的是,第二次的重载并不是不需要层,而是默认把精灵放到了前景层里。 综上所述,上面的代码可以简写为:- Sprite sprite = new Sprite("a.png");
复制代码
如果说想要改变Sprite的位置,则可以给 Sprite 的 X 和 Y  属性赋值,如:- sprite.X = 100;
- sprite.Y = 100;
复制代码 那么当该Sprite再次被渲染的时候则会显示在这个位置。Hint:
Sprite现在的缺点:无法将图片文件在中途改变。这个问题将会在下次的版本中修正。
关于图片重叠问题:由于精灵是逐个渲染的,所以先初始化的精灵会被后初始化的精灵覆盖。
那么,有了图片了,如果还需要显示文字怎么办?
这时则可以使用 Font  类。
类:Font [
公有对象:
Color(Color):字体的颜色。
Text(string):文字内容。
X(int):X 位置。
Y(int):Y位置。
Update()(void):刷新当前文字(自动完成)。
]
由于Font类没有像Sprite那样的构造函数,所以就无法轻易的注销。
并且,文字生成出来之后,应该用Layer.Fonts.Add包含到层里。
(这个问题我在下个版本也会一并修复。)- Font font = new Font("SimSun", 20, false, false);
- font.text = "Hello, world!";
- Screen.Foreground.Fonts.Add(font);
复制代码 |
|