matrix_stack_push

该函数用于将一个新矩阵压入当前矩阵栈的顶部。 它会先将给定的矩阵与当前位于栈顶的矩阵相乘,然后将得到的矩阵压入栈中。

注意 矩阵堆栈的最大大小为 50 个项目。

此函数对于将多个矩阵转换应用于您的视觉效果非常有用,而无需手动将各种矩阵相乘。

例如,您可以将一个基础矩阵推入堆栈,将图形绘制到某个矩形区域(例如,一个窗口)。 使用该矩阵绘制一些图形后,您可以将另一个矩阵压入堆栈以在子区域内绘制图形(如窗口中的按钮)。 在该子区域中绘制内容后,您可以调用 matrix_stack_pop() 将其矩阵从堆栈中移除并继续将视觉对象绘制到主窗口区域中。

 

语法:

matrix_stack_push(matrix);

参数类型描述
matrixMatrix Array要压入到堆栈的矩阵

 

返回:

N/A

 

例子:

var m1 = matrix_build(66, 145, 0, 0, 0, 0, 1, 1, 1);
var m2 = matrix_build(0, 0, 0, 0, 0, image_angle * 6, 1, 1, 1) ;
matrix_stack_push(m1);
matrix_stack_push(m2);
matrix_set(matrix_world, matrix_stack_top());
draw_sprite(spr_tyre, 0, 0, 0);
matrix_stack_pop();
matrix_stack_pop();

上面的代码将构建两个新矩阵,然后将它们压入矩阵堆栈。 然后将世界矩阵设置到堆栈的顶部,绘制一个精灵,然后从堆栈中弹出变换。