It could be a number of things. But without seeing the code, I can't really say for sure what it is. I'm guessing, the problem is in your drawing routine. Perhaps you are doing something like this?

Code:
if (key = vk_space) then dxdraw1.surface.draw(x,y, yourBeam... etc)
This will effectively draw a beam (or the shield for that matter) over and over again, while you are pressing the spacebar. This is of course not what you want, because you may end up with 10 beams instead of just 1.

Instead try this:
Code:
if (key = vk_space) and (shooting = false)  then shooting := true;

//then in your drawing procedure draw the beam
if (shooting) then dxdraw1.surface.draw(x,y, yourBeam... etc)
Of course you should set shooting to false at some point again.

But, like I said, I''m only guessing here, perhaps your problem is of a very different nature.

Btw, I noticed you are using stretchdraw to display the energybar. I'm not sure how you have done it, but I imagine it may look a bit weird (unless it's made of just one color).
Perhaps you might be interested in this way....

Code:
Form1.DXDraw1.surface.Draw(10,30,rect(0,0,decreaseThisValueForTheEffect, 20),energybar,false);
Anway, I hope it helped a bit.