I'm not at home so i can only share theory :D
1. You can check to see if your character is in the air or ground. Add that to your condition. Or more specifically
On Attack Button
-> onGround - do events
-> inAir - do events
however an alternative which reduces condition checks. Assume player starts on ground :D
Jump button -> Jump, enable Group Air, disable Group Ground
attack button -> do ground attack
onlanding -> enable Group Ground, disable Group Air
attack button -> do air attack
2. more manual control of the setVelocity and or speed. As practice just set speed for each action. this way interupts will change the speed back to normal. I'm not sure if your looking for Velocity or Speed.
3. you need more conditions.
and NOT(animationFrame > attackFrame First) & (animationFrame < attackFrame last)
action-> do attack