当前位置:首页 > gamemaker函数中文帮助
window_get_stayontop() 返回窗口是否处于最前。
window_set_sizeable(sizeable) 设置窗口是否可以被用户调整。(玩家只能在边框被显示 的非全屏模式下调整窗口大小)。
window_get_sizeable() 返回窗口是否可以被玩家调整大小。
window_set_caption(caption) 设置窗口标题。通常玩家在设计房间的时候都会自己改动房 间标题。所以这个函数不是很有用,除非你不想通过 Game Maker 完成这个操作。标题只有 在窗口显示边框并且未处于全屏模式时可见。 window_get_caption() 返回窗口的标题。
window_set_cursor(curs) 设置窗口内鼠标指针的类型。你可以使用如下几种鼠标指针类型 :
cr_default 默认 cr_none 无 cr_arrow 箭头 cr_cross 十字 cr_beam 工形
cr_size_nesw 右斜双箭头 cr_size_ns 垂直双箭头 cr_size_nwse 左斜双箭头 cr_size_we 水平双箭头 cr_uparrow 上箭头 cr_hourglass 沙漏 cr_drag 拖拽
cr_nodrop 不能拖拽 cr_hsplit 水平分离 cr_vsplit 垂直分离
cr_multidrag 复数拖拽选中 cr_sqlwait SQL等待 cr_no 拒绝
cr_appstart 载入 cr_help 帮助
cr_handpoint 手指 cr_size_all 全向箭头
特别指出,要想隐藏鼠标指针呢,使用 cr_none 这个值 window_get_cursor() 返回窗口中使用的鼠标指针类型
window_set_color(color) 设置窗口未用来绘制房间的部分的颜色。 window_get_color() 返回窗口颜色。
window_set_region_scale(scale,adaptwindow) 如果窗口比当前房间大,通常房间就会显 示在窗口的中心位置。这里你可以指定房间自动缩放以适应窗口大小。设为 1 代表不进行 缩放。如果你使用 0 作为参数则代表伸展填充全部窗口区域。如果你设置为一个负值则代 表在窗口内维持高宽比的最大尺寸(通常也是你希望的模式)。adaptwindow 指定窗口尺寸 是否根据房间尺寸进行适应调整。只在缩放值为正值时起作用。 window_get_region_scale() 返回绘图区域的缩放值。
窗口在屏幕上有一个位置和尺寸。(当我们谈到位置和尺寸的时候通常是指不包括边框的窗 口界面。)你可以更改他们尽管在你的游戏中几乎从未用到过。通常这些属性都是自动设置 或者玩家调整的。以下几个函数可以更改窗口的位置和尺寸。记住这些函数只工作在窗口模 式下。如果窗口处于全屏模式他们仍然可以使用但你只能在离开全屏模式后才可以看到结果。
window_set_position(x,y) 设置窗口界面的位置
window_set_size(w,h) 设置窗口界面的尺寸。记住如果这个尺寸比绘图区域小的多它会自 动扩大以适应绘图区域的大小。
window_set_rectangle(x,y,w,h) 设置窗口矩形区域的位置和尺寸。(一次完成上面两项操 作。)
window_center() 将窗口移动至屏幕正中。
window_default() 将窗口设置为默认尺寸和位置(居中)。 window_get_x() 返回窗口当前位置的横坐标。 window_get_y() 返回窗口当前位置的纵坐标。 window_get_width() 返回窗口当前宽度。 window_get_height() 返回窗口当前高度。
再次说明,你可能从来不会用到这些窗口函数,因为 Game Maker 可以自动设置它们。 更特殊的情况你需要知道鼠标在窗口内的位置。(通常用来根据鼠标位置定位房间或视野。 )以下几个函数用来完成这项工作。
window_mouse_get_x() 返回鼠标在窗口内的横坐标。 window_mouse_get_y() 返回鼠标在窗口内的纵坐标。
window_mouse_set(x,y) 设置鼠标在窗口内的位置,坐标(x,y)。 视野
就像你知道的那样在设计房间时你可以最多定义8个不同的视野位置。一个视野由房间的视 野区域和屏幕上的视点组成(确切的说是屏幕上的绘图区域内)。使用视野你可以在屏幕的 每一步中显示房间的不同部分。当然,你可以指定一个特定的对象始终可见。
你可以通过一些代码控制视野。你可以让视野可见或隐藏,并在绘图区域中改变视野的位置 或者大小,又或者在房间中改变视野的位置和大小(尤其在你想设定房间里所有对象都不可 见的时候)。你可以从水平和垂直两个方向上对可视对象周围视野的大小进行调整,同时你 可以指定哪些对象在视野中可见。后面这些应用在重要对象在游戏中有所改变时比较重要。 例如,你可能会根据对象所处的状态改变主要角色对象。不幸的是,这个对象需要在视野中 不可见。这可以通过一段简单的代码完成 : {
view_object[0] = object_index; }
以下几个变量决定了视野的各项属性。除了前两个之外其他几个变量都是从0到7的八个不同 数组元素。
view_enabled 返回视野是否启用。
view_current* 返回当前使用的视野(编号0到7)。只在绘图事件中使用。你可以检查这个 变量以确保在某一个视野中进行绘图。变量无法改动。 view_visible[0..7] 返回指定的视野是否在屏幕上可见。
view_xview[0..7] 返回视野在房间的横坐标位置。 view_yview[0..7] 返回视野在房间的纵坐标位置。 view_wview[0..7] 返回视野在房间的宽度。 view_hview[0..7] 返回视野在房间的高度。
view_xport[0..7] 返回绘图区域内视点的横坐标。 view_yport[0..7] 返回绘图区域内视点的纵坐标。 view_wport[0..7] 返回绘图区域内视点的宽度。 view_hport[0..7] 返回绘图区域内视点的高度。
view_angle[0..7] 房间内视野的旋转角度。(逆时针,单位角度) view_hborder[0..7] 可见对象周围边框的水平尺寸(单位像素)。 view_vborder[0..7] 可见对象周围边框的垂直尺寸(单位像素)。 view_hspeed[0..7] 视野的最大水平速度。 view_vspeed[0..7] 视野的最大垂直速度。
view_object[0..7] 视野中必须保持可见的对象实例。如果有多个实例则只有第一个算数。 你可以分配一个实例 id 到这个变量上。这样特定的实例就被指定。
注意屏幕上图像的尺寸由房间开始时指定的可见视野决定。如果你在游戏中改变了视野,他 们可能无法符合屏幕尺寸。屏幕尺寸并不会自动适应。所以你需要自己去操作,使用如下几 个函数 :
window_set_region_size(w,h,adaptwindow) 设置窗口中的绘图区域宽度和高度。 adaptwindow 参数指定窗口尺寸是否一定要适应绘图区域大小。窗口尺寸在你使用固定缩放 比例时将总是适应。(请看函数 window_set_region_scale() 相关内容。) window_get_region_width() 返回当前绘图区域的宽度。 window_get_region_height() 返回当前绘图区域的高度。
在游戏中你经常需要知道鼠标的位置。通常你会使用变量 mouse_x 和 mouse_y 来获取坐标 。当使用多个视野时,这些变量给出的是鼠标在当前视野内的坐标。有时候,你可能需要知 道鼠标在特定视野内的坐标,或者当鼠标离开当前视野后的坐标。以下函数就是为这样的情 况准备的。
window_view_mouse_get_x(id) 返回鼠标在编号为 id 的视野内的横坐标。 window_view_mouse_get_y(id) 返回鼠标在编号为 id 的视野内的纵坐标。
window_view_mouse_set(id,x,y) 在编号为 id 的视野内设置鼠标坐标为(x,y)。 window_views_mouse_get_x() 功用同 mouse_x 。 window_views_mouse_get_y() 功用同 mouse_y 。
window_views_mouse_set(x,y) 设置当前可见的第一个视野内的鼠标坐标为(x,y)。
过渡
如你所知,当你从一个房间移动至另一个房间的时候你可以选择一个过渡。你同样可以通过 一个变量 transition_kind 设置过渡为下一帧而不需要移动至下一个房间。如果你设置这 个变量值为 1 到 13 之间,相应的过渡类型就会被使用(同样可以为房间设置过渡类型)。 设为 0 代表没有过渡。这个变量只在下一帧被绘制时起作用。 transition_kind 指定下一帧使用的过渡类型。有如下几个数值 0 = 没有过渡 1 = 从左边开始 2 = 从右边开始 3 = 从上边开始 4 = 从下边开始 5 = 从中间开始 6 = 从左边开始移动 7 = 从右边开始移动 8 = 从上边开始移动 9 = 从下边开始移动 10 = 从左边开始交错 11 = 从右边开始交错 12 = 从上边开始交错 13 = 从下边开始交错
注意使用不同的绘图函数可以简单地制作出你自己的过渡类型。例如,要使用渐黑过渡你可 以绘制一个与房间等大的黑色矩形,并逐渐增加阿尔法透明通道值。或者你可以移动视野的 位置或尺寸来让房间离开视线。 重绘屏幕
通常在房间每步执行后都会重绘一次屏幕。但极少情况下你需要在其他时候重绘屏幕。而重 绘屏幕的时候程序经常处于非控制状态。例如,在等待较长一段时间后的重绘。同样,当你 的代码显示出一条信息同时希望玩家按下任意键继续的时候,你需要在这之间进行重绘。有 两种方式完成这项工作
screen_redraw() 调用绘图事件重绘房间。
screen_refresh() 使用当前房间图像刷新显示(而不是使用绘图事件)。
要理解第二个函数的作用,你需要进一步了解绘图的工作流程。有一幅内部图像会保存所有 即将发生的绘制事件。这张图像在屏幕上是不可见的。只有在每步的最后,所有绘图都被替 换后,屏幕图像才会被这张内部图像替换掉。(这通常被叫做双倍缓冲)。第一个 redraw 函数重绘了内部图像,然后刷新屏幕图像。第二个函数 refresh 只是刷新了一次屏幕图像。 现在你知道为什么只能在绘图事件中进行绘图而无法其他动作或函数事件中绘图的原因。他 们可以在内部图像中进行绘制但并不会在屏幕上显示出来。而等到绘图事件发生时,首先房 间背景进行绘制,抹去所有你在内部图像上绘制过的东西。但如果你可以在绘图后使用 screen_refresh() 函数,更新后的图像将在屏幕上显示。所以,举个例子,一段可以在屏 幕上绘制一段文字的代码,调用了刷新函数并等待玩家按下任意键,如下所示:
共分享92篇相关文档