想问下什么情况绘图事件执行先于步事件
gamemaker吧
全部回复
仅看楼主
level 8
anheimfb 楼主
今天碰到了这种情况 郁闷半天 同样的代码 复制到别的项目上 绘图事件居然优先执行 后来把步事件换成步结束才好(换成步开始都不行) 但是原来的程序却不需要这样做 倒低哪里出错了
2014年08月29日 09点08分 1
吧务
level 12
绘制事件在本帧的最后执行。
感觉你遇到的问题,不是因为先后顺序。
你可以贴下不同事件的代码。
2014年08月29日 11点08分 2
哇 有小吧主回复 感觉应该是没贴错,我在回去好好检查下吧 虽然已经检测了半天了 ,实在不行 我把原代码发给你帮我看看好不好
2014年08月29日 11点08分
回复 anheimfb :如果GMS就没问题。
2014年08月29日 12点08分
回复 blovestorm :我刚才又去弄了一下 连精灵都是一样的了 还是一个正常运行 一个错误提示 你的意思是不是我碰到bug了 gms更专业一些 不会有bug?
2014年08月29日 12点08分
回复 anheimfb :gm8.0吧。bug可能性不大,应该是逻辑问题。 因为我手头只有gms。你贴代码吧
2014年08月29日 12点08分
level 8
anheimfb 楼主
先是7个精灵 2个实例
2014年08月29日 12点08分 3
level 8
anheimfb 楼主
实例shang1有一个step事件和draw事件
步事件:
global.n=image_index;
image_speed=0.4
if global.a=*stop*
instance_destroy();
if global.a=*up*
{image_xscale=2;image_angle=0;a1=45;shang1.depth=object11.depth+1}
if global.a=*down*
{image_xscale=2;image_angle=180;a1=45;shang1.depth=object11.depth-1}
if global.a=*left*
{image_yscale=2;image_angle=90;a1=0;shang1.depth=object11.depth+1}
if global.a=*right*
{image_yscale=2;image_angle=270;a1=0;shang1.depth=object11.depth+1}
draw事件:
draw_sprite_ext(sprite_index,-1,x,y,image_xscale,image_yscale,image_angle,c_white,1)
qianhuo.image_index=0; qianhuo.depth=-2
draw_sprite_ext(qianhuo,-1,x
+3
0,y-100,1,1,image_angle+a1,c_white,1)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
实例Object11有一个create事件和step事件
create事件:
global.a=*up*;
step事件:
image_speed=0.4;
if image_index=4
{image_index=0;sprite_index=duochong;global.a=*stop*}
if keyboard_check_pressed(vk_up)
{instance_deactivate_object(shang1);image_index=0;sprite_index=duochongshang;instance_create(x,y,shang1);global.a=*up*}
if keyboard_check_pressed(vk_down)
{instance_deactivate_object(shang1);image_index=0;sprite_index=duochongxia;instance_create(x,y,shang1);global.a=*down*}
if keyboard_check_pressed(vk_left)
{instance_deactivate_object(shang1);image_index=0;sprite_index=duochonghou;instance_create(x,y,shang1);global.a=*left*}
if keyboard_check_pressed(vk_right)
{instance_deactivate_object(shang1);image_index=0;sprite_index=duochongqian;instance_create(x,y,shang1)global.a=*right*}
2014年08月29日 12点08分 4
level 8
anheimfb 楼主
这是做 dnf里 多重爆头技能的代码 不知道大神门知道dnf不
接触gm几天 真的很喜欢 做了挺多有意思的东西
2014年08月29日 12点08分 5
吧务
level 12
把shang1里step事件变更为step end事件
代码不变。
2014年08月29日 12点08分 6
试试看可以吗
2014年08月29日 12点08分
回复 blovestorm :试过了 我的帖子一开始就说了 可以到是可以 但是 原来的不需要变step end就运行啊
2014年08月29日 12点08分
回复 anheimfb :在GM的object编辑器中,把shang1与object11上下换个位置。
2014年08月29日 12点08分
回复 blovestorm :而且感觉正常逻辑的话 好象不需要tep end吧
2014年08月29日 12点08分
吧务
level 12
实在抱歉,GM8.0我没有研究过,我说说GMS的运行机制吧(个人觉得GMS应该与GM8.0运行机制相同)。
在object11对象的step事件里,通过instance_create创建对象shang1的实例时。
此时此刻,这个shang1实例首先运行create事件所有代码。
但是这个实例shang1在本帧里,并不会运行step事件。
在step下个事件里,所有实例会根据对象或id等因素,顺序执行事件代码。
当这个实例shang1在下一帧开始,则会正常运行step事件。
2014年08月29日 12点08分 7
这也就说,如果你把对象shang1的step代码,全部放到step end里。 那么shang1在step被其他实例创建时,虽说不会运行本帧的step事件。 但是step的下一个事件step end,在本帧中他会正常运行。
2014年08月29日 12点08分
回复 blovestorm :好象是比较深入的问题呢 感觉有些理解了,但是为什么同样是这个代码, 原来的项目却能正常运行呢, 贴过去的却不行
2014年08月29日 13点08分
回复 anheimfb :原来项目代码你也可以贴下。
2014年08月29日 13点08分
回复 anheimfb :可能有其他因素影响。
2014年08月29日 13点08分
level 8
anheimfb 楼主
回复 blovestorm :经过我不停的断网和连网终于进来了 帮大忙了
2014年08月30日 02点08分 8
1