sprite_create_from_surface


语法:

sprite_create_from_surface(index, x, y, w, h, removeback, smooth, xorig, yorig);

参数 描述
index 将被使用的表面的索引。
x 被复制点的X轴坐标。
y 被复制点的Y轴坐标。
w 被复制区域的宽度。(从之前的X轴坐标算起。)
h 被复制区域的长度。(从之前的Y轴坐标算起。)
removeback 指示是否将所有与背景(左下角的像素)颜色相同的像素变成透明
smooth 指示是否将边缘变得平滑。
xorig 指示此精灵的原点X轴坐标。
yorig 指示此精灵的原点X轴坐标。


返回

Real (unique sprite ID value)


描述

使用此函数你将会从一个之前就被初始化的表面创建一个精灵。所需要的表面索引通过 surface_create函数获得。你将输入的X,Y坐标应该是与该表面 的原点(左上角)的相对位置,而不是游戏窗口或可用的视野。宽度和高度参数的单位是像素,并且使用此参数来规定使用的表面部分的高度和宽度。

将 "removeback" 参数设为 true 将会把背景色从精灵中移除, 该方法的工作原理是检查精灵左下角的颜色并移除这种颜色。

如果你选择了“removeback"选项,你可能也希望 GameMaker Studio 2 将其边缘变得平滑,因此你将 "smooth" 参数设置为 true. 但你所做的实际上就是在移除精灵的背景后,为精灵边缘创建一个半透明的边框。

最后,你当然也可以为精灵设置具体的X轴和Y轴 原点。这个原点就是此精灵固定在模板上的固定点,并且这个点的位置坐标就是与精灵最左上角的点的相对坐标。. 比如,一个精灵是32X32的像素大小,如果你设置它的原点坐标为(16,16),那么原点就在精灵的中心。

默认情况下,系统会自动根据图片的尺寸和透明度为图片加上一个边界框,用于之后可能的碰撞检测或其它。如果需要修改边界框,你需要使用 sprite_collision_mask函数。

注意: 当你使用该方法在 GameMaker Studio 2创建了一个精灵 而之后又不再需要时,你必须使用 sprite_delete函数将其删除,否则可能会使存储泄露或游戏崩溃。
重要!该函数在试用版(Trial License)产品中可用。


例如:

var surf;
surf = surface_create(32, 32);
surface_set_target(surf);
draw_clear_alpha(c_black, 0);
draw_sprite(spr_Body, 0, 0, 0);
draw_sprite(spr_Clothes, 0, 0, 0);
draw_sprite(spr_Hair, 0, 0, 0);
spr_custom = sprite_create_from_surface(surf, 0, 0, 32, 32, true, true, 16, 16);
surface_reset_target();
surface_free(surf);

上述代码将会首先创建表面,并将表面的索引存储在本地变量"surf"中。然后再选中刚才创建的表面,并在表面上绘制图片。最后它将从表面上的混合图像中创建一个新精灵,并将它的索引赋予"spr_Custom" ,最后释放被表面占用的存储。