Note: This has been a problem for a while. R81 just indicates that it's still a problem in the current build.
A couple others and myself have been playing with Construct 2 a bit and ran into a bit of an odd behavior with events that may or may not be classified as a bug... but regardless it's less than desirable for what we are trying to do.
Suppose we have a sprite object with variables to track control in the following manner:
sprite.up = 0
sprite.up_pressed = 0
And then we have an event at the beginning of the frame as follows:
System.Every Tick
sprite.set(up = 0)
sprite.set(up_pressed = 0)
Keyboard.Up arrow is down
sprite.set(up = 1)
Keyboard.Up arrow pressed
sprite.set(up_pressed = 1)
For some reason, in spite of the order of events dictating that if the up arrow is pressed that the value of up_pressed should be set to zero if the key is pressed, at the end of that code, the value is always 0 as though the System.Every Tick event occured afterwards. It's pretty troubling since it leaves me wondering whether I can trust the event order to follow logically with how I established it...
Naturally, if I disable sprite.set(up_pressed = 0), then pressing up will set up_pressed to 1.
I'm going to go ahead and link an example:
http://www.dimensionwarped.sonicfangameshq.com/remote/Keyboard_Malfunction.capx
EDIT:
Oh, I should amend this to mention that this only occurs with the pressed event conditions. With the key down conditions, the order of execution appears to perform as expected... which is visible in this demonstration.
EDIT 3:
Confirmed in Chrome 17.0.963.78, Firefox 10.0.2 and Internet Explorer 9.0.8112.16421