We have discovered that clicking a BUTTON somehow disables the OnEvent for KEYDOWN.
We have a work around by getting rid of the “start” button and replace it with hit the space bar to start. The event.key==" " would be in the OnEvent Keydown section which is the workaround.
Hopefully, someone with better Javascript skills can fully answer your question. I noticed that your startMotion function is an infinite loop. When I move those lines into the onEvent, I was able to get the icon to move after pressing the start button but only after I left-clicked on the screen. Essentially, the first keydown had to be the left mouse button.
Thanks for noticing that something is beyond my pay grade here. Even with your adjusted, there is still something the keydown OnEvent not to work until we left click the screen. It’s very weird.
Overall, an OnEvent Button doesn’t play nice with KeyDown.
As @anmrobnott mentioned the keydown does start responding after you click on back on the screen, which leads me to believe it has something to do with which element has focus. I tried attaching your keyDown event handler to the start button, but that doesn’t seem to work either. Definitely feels like a bug, so I’m going to pass it along to the engineering team.
@josh agree. It’s a focus issue but I think related to hideElement
@jkeays if you comment out the hideElement lines for the start button and instructions, you get keydown activity back.
So what I suspect is happening - is a bug - is that hideElement hides but in so doing gives focus to the now hidden element, which in HTML5 means it can’t trigger, or listen for events anymore. What I don’t totally understand is why the screen would entirely lose focus in the first place.
So, knowing this I tried all sorts of shenanigans to give focus back to the screen. In the end I made a second screen with the character on it, but none of the buttons. So now when the start button is clicked, rather than hiding the button and instructions, it just switches screens. It’s a kluge and a work around but achieves the effect.
It is very bizzare. If you look at the code to my original link, you can press the arrow keys before the button and you can see a message in the console log. This tell me the keydown onevent is working. However, as soon as I click the start button, it somehow disables the keydown onevent like it doesn’t even exist.
Similar code has been written by my students it the same type of bug exists.
Thanks for your help passing it on.
For now, we have bypassed this issue by hitting the spacebar to kickstart the timedLoop animating the image.
Thank @baker. I just spent another 15 minutes troubleshooting and I just saw this note. I discovered what you noticed as well with the buggy HideElement of the Start Button which is “changing” screens to a mysterious screen creating havoc with the keydown Onevent.
I will take a look at your workAround but I created another without creating a 2nd screen. I just used the setScreen command to stay on the same screen and it then allows the keyDown OnEvent to start listening again.
Very Bizarre.
I put a few comments in the updated code with the workAround
Thanks for everyone’s help.
Secretly, I actually enjoy weird problems like this tinkering to find a solution.
@roakman This original issue I raised has now been addressed as a “bug” and the engineers will be adjusting code/studio to resolve.
It’s not clear to me from your note if you need all around help or help with this specific issue related to a button distracting from the “focus” for a keydown OnEvent.
I am a teacher and this is my first year. I have been learning how to code but I don’t know it well enough to debug problems.
I need help with this because the students are having issues and I don’t know what to say. I think they are small issues but I can’t find the problems.
Are your students working on the Create Task? If so, you cannot give your students any feedback including resolving bugs. It can be challenging to sit back and watch the students work independently. However, I find they eventually figure it out.
Someone will jump in to help you work through any other problems but we would need to see the code with a clear description of what you want it to do. If the problem is on one of the activity levels, state which lesson and which bubble. I would also recommend moving your question to its own thread so the subject line matches your issue.