To use mllis() for timing instead of delay() you need to restructure your program to keep loop() running freely
An example
unsigned long currentTime;
unsigned long startTime;
unsigned long period = 1000;
byte count = 0;
void setup()
{
Serial.begin(115200);
while (!Serial);
}
void loop()
{
currentTime = millis();
if (currentTime - startTime >= period)
{
Serial.println(count);
startTime = currentTime;
count++;
if (count >= 10)
{
count = 0;
}
}
}
Of course, instead of printing you could do almost anything. If you want more than one pattern then when you have finished the current one change to another one by having the action controlled by a variable
Take a look at Using millis() for timing. A beginners guide, Several things at the same time and the BlinkWithoutDelay example in the IDE