By Alvin Alexander. Last updated: June 4, 2016
I’ve written a couple of small Sencha ExtJS applications lately, and I can confirm that the following technique works to display a splash screen while your application is loading.
(This isn’t a tutorial per se. I assume that you know how to use ExtJS, and just want to see how to implement a splash screen (loading page) as the user waits for the application to load.)
In short, you’ll want code like this in your Ext.application function:
// create a reference in Ext.application so we can access it from multiple functions
splashscreen: {},
init: function() {
// start the mask on the body and get a reference to the mask
splashscreen = Ext.getBody().mask('Loading AlRadio, please stand by ...', 'splashscreen');
},
launch: function() {
Ext.tip.QuickTipManager.init();
var task = new Ext.util.DelayedTask(function() {
// fade out the body mask
splashscreen.fadeOut({
duration: 500,
remove: true
});
// fade out the message
splashscreen.next().fadeOut({
duration: 500,
remove: true
});
});
task.delay(1000);
}
That is known to work on a project I used to call AlRadio, and now call Radio Pi (thanks to a friend for the better name). The full function code is shown here:
Ext.application({
name: 'Radio',
extend: 'Radio.Application',
requires: [
'Ext.form.Panel',
'Ext.grid.Panel',
'Ext.slider.Single',
'Radio.store.RecordedStreams',
'Radio.store.Podcasts'
],
views: [
'Radio.view.RadioStationsPanel',
'Radio.view.RadioStreamsPanel',
'Radio.view.RecordedStreamsPanel',
'Radio.view.PodcastsPanel',
'Radio.view.VcrControlPanel',
],
controllers: [
'Radio.controller.RadioStations',
'Radio.controller.RadioStreams',
'Radio.controller.VcrController',
'Radio.controller.RecordedStreamsController',
'Radio.controller.PodcastsController'
],
models: [
'Radio.model.RadioStation',
'Radio.model.RadioStream',
'Radio.model.RecordedStream',
'Radio.model.Podcast'
],
stores: [
'Radio.store.RadioStations',
'Radio.store.RadioStreams',
'Radio.store.RecordedStreams',
'Radio.store.Podcasts'
],
autoCreateViewport: true,
// create a reference in Ext.application so we can access it from multiple functions
splashscreen: {},
init: function() {
// start the mask on the body and get a reference to the mask
splashscreen = Ext.getBody().mask('Loading AlRadio, please stand by ...', 'splashscreen');
},
launch: function() {
Ext.tip.QuickTipManager.init();
var task = new Ext.util.DelayedTask(function() {
// fade out the body mask
splashscreen.fadeOut({
duration: 500,
remove: true
});
// fade out the message
splashscreen.next().fadeOut({
duration: 500,
remove: true
});
});
task.delay(1000);
}
});
I think I found this technique in the book, Mastering Ext JS. That book shows more techniques you can use to add custom images to your splashscreen.

