I got this workaround to show the splashscreen indefinitely until we hide it in runtime:
1- A custom SplashScreen class is needed. We cannot create one that extends from the original one (located at "frameworks/projects/mobilecomponentes/src/spark/preloaders/SplashScreen.as"), because some changes must be made in a pair of private methods. So, copy the whole file into a "CustomSplashScreen.as" (changing package path and the class name in its declaration and its constructor method).
2- Set the new CustomSplashScreen class as the default preloader in main MXML:
3- Back in our CustomSplashScreen class, we declare a new static variable.
static public var DISPLAY_TIME:Number = 1000; // in ms
4- This variable will have initially the same value as the minimumDisplayTime property. To do this, we modify the "prepareSplashScreen()" method, adding the bold part:
private function prepareSplashScreen():void
if ("splashScreenMinimumDisplayTime" in info)
DISPLAY_TIME = this.minimumDisplayTime = info["splashScreenMinimumDisplayTime"];
5- Then modify the "initCompleteEnterFrameHandler()" method to check if both times were reached (again add the bold line):
private function initCompleteEnterFrameHandler(event:Event):void
if (currentDisplayTime <= minimumDisplayTime
&& DISPLAY_TIME > 0)
6- Finally, we must reset this new variable somewhere to hide the splashscreen. For example, after the creation_completeHandler actions are done:
CustomSplashScreen.DISPLAY_TIME = 0;
P.D. The code above works, but I would really like to do this without creating a new class with the same contents, but extending from the original SplashScreen class. Maybe someone could fix my solution with a better approach.