Setting vector for bullet instances

I’m working on a zombie shooter, with a top-down view. Think asteroids, except with zombies instead of rocks. So, I’m coding weapons fire. I can generate bullets all day and all of the night, and can get them going in the direction the hero’s gun is pointing - except that once you change the rotation of the hero, the bullet vectors change too. Any ideas on how to keep the bullet on an unchanging vector? I’ve tried all sorts of stuff, but nothing works.

Here’s the code so far:
ActionScript Code:
[FONT=Courier New][LEFT][COLOR=#808080]//2.20.07 [/COLOR]
[COLOR=#808080]
//motion of the hero. This works fine.
[/COLOR]
[COLOR=#000000]function[/COLOR] moveHero[COLOR=#000000]([/COLOR]speed, swivel[COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]//left and right arrow keys rotate our plucky hero; up key moves him forward relative to his rotation[/COLOR]
[COLOR=#0000FF]if[/COLOR] COLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
hero.[COLOR=#0000FF]_rotation[/COLOR] -= swivel;
[COLOR=#000000]}[/COLOR] [COLOR=#0000FF]else[/COLOR] [COLOR=#0000FF]if[/COLOR] COLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
hero.[COLOR=#0000FF]_rotation[/COLOR] += swivel;
[COLOR=#000000]}[/COLOR] [COLOR=#0000FF]else[/COLOR] [COLOR=#0000FF]if[/COLOR] COLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
heroAngle = [COLOR=#000080]90[/COLOR]-hero.[COLOR=#0000FF]_rotation[/COLOR];
xchange = [COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]cos[/COLOR]COLOR=#000000[/COLOR];
ychange = -[COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]sin[/COLOR]COLOR=#000000[/COLOR];
hero.[COLOR=#0000FF]_x[/COLOR] += xchangespeed;
hero.[COLOR=#0000FF]_y[/COLOR] += ychange
speed;
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]//call the function that makes him fire his weapon[/COLOR]
[COLOR=#0000FF]if[/COLOR] COLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
shootItCOLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]///[/COLOR]
[COLOR=#808080]/the function to shoot the bullets. Attach movie clips of bullets, then impart vector and velocity
using the sine and consine functions, too. But currently the vector changes when the rotation of
the hero changes. /[/COLOR]
[COLOR=#808080]
//
[/COLOR]
[COLOR=#808080]//variables for bullet generation, and the speed of the bullets.[/COLOR]
[COLOR=#000000]var[/COLOR] b = [COLOR=#000080]1[/COLOR];
[COLOR=#000000]var[/COLOR] bSpeed=[COLOR=#000080]3[/COLOR];
[COLOR=#000000]function[/COLOR] shootItCOLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#808080]//incrementing our bullet variable by one[/COLOR]
b++;
[COLOR=#808080]//creating a variable to reference generated bullet instances[/COLOR]
[COLOR=#000000]var[/COLOR] [COLOR=#0000FF]bullet[/COLOR] = [COLOR=#FF0000]“bullet”[/COLOR]+b;
[COLOR=#808080]//putting bullets into action![/COLOR]
[COLOR=#0000FF]_root[/COLOR].[COLOR=#0000FF]attachMovie[/COLOR][COLOR=#000000]([/COLOR][COLOR=#FF0000]“bullet”[/COLOR], [COLOR=#0000FF]bullet[/COLOR], [COLOR=#0000FF]getNextHighestDepth[/COLOR]COLOR=#000000[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#808080]//setting bullet instance x & y to hero x & y[/COLOR]
[COLOR=#0000FF]_root[/COLOR][COLOR=#000000][[/COLOR][COLOR=#0000FF]bullet[/COLOR][COLOR=#000000]][/COLOR].[COLOR=#0000FF]_x[/COLOR] = hero.[COLOR=#0000FF]_x[/COLOR];
[COLOR=#0000FF]_root[/COLOR][COLOR=#000000][[/COLOR][COLOR=#0000FF]bullet[/COLOR][COLOR=#000000]][/COLOR].[COLOR=#0000FF]_y[/COLOR] = hero.[COLOR=#0000FF]_y[/COLOR];
[COLOR=#808080]//onEnterFrame to put the bullets in motion -[/COLOR]
[COLOR=#808080]//here’s where the weirdness starts. When the hero rotates, the vector of the bullets changes to match.[/COLOR]
[COLOR=#0000FF]_root[/COLOR][COLOR=#000000][[/COLOR][COLOR=#0000FF]bullet[/COLOR][COLOR=#000000]][/COLOR].[COLOR=#0000FF]onEnterFrame[/COLOR] = [COLOR=#000000]function[/COLOR]COLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
bulletAngle = [COLOR=#000080]90[/COLOR]-hero.[COLOR=#0000FF]_rotation[/COLOR];
bXchange =[COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]cos[/COLOR]COLOR=#000000[/COLOR][COLOR=#000080]5[/COLOR];
bYchange = -[COLOR=#0000FF]Math[/COLOR].[COLOR=#0000FF]sin[/COLOR]COLOR=#000000[/COLOR]
[COLOR=#000080]5[/COLOR];
[COLOR=#0000FF]this[/COLOR].[COLOR=#0000FF]_x[/COLOR]+=bXchangebSpeed;
[COLOR=#0000FF]this[/COLOR].[COLOR=#0000FF]_y[/COLOR]+=bYchange
bSpeed;
[COLOR=#808080]//remove movie clip instances once they leave the stage[/COLOR]
[COLOR=#0000FF]if[/COLOR] [COLOR=#000000]([/COLOR][COLOR=#0000FF]this[/COLOR]._x>Stage.[COLOR=#0000FF]width[/COLOR] || [COLOR=#0000FF]this[/COLOR]._x<[COLOR=#000080]0[/COLOR] || [COLOR=#0000FF]this[/COLOR]._y>Stage.[COLOR=#0000FF]height[/COLOR] || [COLOR=#0000FF]this[/COLOR]._y<[COLOR=#000080]0[/COLOR][COLOR=#000000])[/COLOR] [COLOR=#000000]{[/COLOR]
[COLOR=#0000FF]this[/COLOR].[COLOR=#0000FF]removeMovieClip[/COLOR]COLOR=#000000[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#000000]}[/COLOR];
[COLOR=#000000]}[/COLOR]
[COLOR=#808080]//actually get it all going![/COLOR]
[COLOR=#0000FF]this[/COLOR].[COLOR=#0000FF]onEnterFrame[/COLOR] = [COLOR=#000000]function[/COLOR]COLOR=#000000[/COLOR] [COLOR=#000000]{[/COLOR]
moveHero[COLOR=#000000]([/COLOR][COLOR=#000080]5[/COLOR], [COLOR=#000080]10[/COLOR][COLOR=#000000])[/COLOR];
[COLOR=#000000]}[/COLOR];
[/LEFT]
[/FONT]

thanks in advance!