Blink LED w/out delay using shift registers

I've been trying to blink some LED'd using a shift register (SN74HC595N), I can get it to work, but only when using the delay function.

I've messed around with blinking LED's without the delay function, but i'm trying to do the same but this time adding a shift register into the mix... Here's the code i have to make it blink.

  if( (val1_unack >= 2) && (val2_unack == 0) ){
   ledData=led_dataArray[0];
  digitalWrite(led_latchPin, 0);
   shiftOut(led_dataPin, led_clockPin, ledData); 
    digitalWrite(led_latchPin, 1);
    delay(500);    
    ledData=led_dataArray[1];
    digitalWrite(led_latchPin, 0);
    shiftOut(led_dataPin, led_clockPin, ledData); 
    digitalWrite(led_latchPin, 1);
    delay(500);          

   }

led_dataArray[0] turns off all the LED's led_dataArray[1] only turns on two LED's

The ultimate problem with using this method is that i'm trying to caputure button presses while its blinking. The blinking with delay is really affecting how long it takes for the button to register given that its sleeping for 1 sec.. Any ideas would greatly be appreciated.

Thanks.

See http://arduino.cc/en/Tutorial/BlinkWithoutDelay