the way i did it with bmaps is to have them all as seperate panels, then use mouse_panel to determine if the mouse is still over the panel

store a panel pointer as active_panel

then check at the start of the function for the mouse_over if(active_panel)
if true then set this back to it's default values
active_panel.scale_x = 1 etc...

then set the new panel as the active_panel... and manipulate as you want to

Code:
while(1){

  if(active_panel){
    while(active_panel.scale_x < 1.5){
      if(active_panel == mouse_panel){
        active_panel.scale_x += 0.05;
        wait(1);
      }
    }

    while(active_panel.scale_x > 0.5){
      if(active_panel == mouse_panel){
        active_panel.scale_x -= 0.05;
        wait(1);
      }
    }
  
    wait(1);
  }else{

    wait(1);
//    loop function

}[code]

alternaltively if you want to use textsizes
store the ones you need in an array

[code]FONT* fnt_pulse[5];
  then use similar code for cycling thro the fonts


hope this helps
*untested*