求助,关于代码运行逻辑
gmstudio吧
全部回复
仅看楼主
level 4
yishalee 楼主
求助! GML step事件里,我的角色小人如果按A或D键就会左右行走,不按AD时就站立。站立和行走是两个不同的sprite。下面第一张图片是正确的代码,第二张是问题代码。
问题代码执行的结果是按着方向键行走时sprite在行走图和别的sprite之间不停切换,导致角色闪啊闪的。 后来发现问题是红圈里的代码位置放错了。
但是我不明白的是,GML每一步里不是先从上到下运行完代码,然后再把最终结果画到屏幕上吗?如果是那样的话,虽然每一步开始的时候sprite_index赋值为站立图,但是只要按着方向键就会变成行走图,那么最终计算结果不还是行走图吗,画出来也是行走图吗。那为什么会还会出现这种情况呢?
换句话说,问题的关键是:第二张图里,红圈代码和下面的if是否存在顺序问题?计算机是依次计算赋值,以最后的为准?还是说sprite_index在红圈处和if块里分别出现了两个赋值所以计算机不知道该听谁的?
2017年08月10日 14点08分 1
level 4
yishalee 楼主
已解决,研究debug发现了背后的原理。
2017年08月11日 05点08分 2
level 9
貌似BloveStorm大大有一个事件程序运行顺序表的,你可以去看一看
2017年08月11日 10点08分 3
level 9
貌似BloveStorm大大有一个事件程序运行顺序表的,你可以去看一看
2017年08月11日 10点08分 4
嗯。我昨晚为了研究这个问题也去翻了这个文章。以后还会好好读一下。不过这个问题和事件运行顺序无关,已经解决了。
2017年08月11日 10点08分
@yishalee 那就好
2017年08月11日 10点08分
level 1
是什么原因呢?
2017年08月26日 16点08分 5
当更换sprite时,image index不变,即不会归零。但是如果image index超过了新sprite的imageindex最大值时,就会归零。
2017年08月26日 16点08分
1