この記事http://www.adobe.com/devnet/flex/articles/flex-mobile-performance-checklist.htmlを読んで、ビューの外観を creationComplete ハンドラーで初期化してはいけません。代わりに、オーバーライドされたデータ セッターでビューの外観を変更する必要があります。
この記事のセクションは次のとおりです。
バインディングを使用したり、creationComplete ハンドラーでビューの外観を初期化したりする代わりに、データ セッターをオーバーライドします。
1-まず、次のことを行ってこれが正しいかどうかを知りたいです。
//My code is loading a set of images and adding them in a View.
//On creationComplete of the View I am adding the images in case this is the first time
//the view is shown. In case the view has been already accessed I use the data:
protected function view1_creationCompleteHandler(event:FlexEvent):void
{
if(!data) //On first creation of the view I create the data object
{
data = new Object();
data.imageArray = new Array(); //set an array that will cache my images.
for(var i:int = 0; i<36;i++)
{
var img:Image = new Image();
img.source = 'assets/0'+i.toString()+'.png';
container.addElement(img);
(data.imageArray as Array).push(img);//Override the data for next time!
}
}
else//Next time use the save images
{
for(var ix:int = 0; ix<(data.imageArray as Array).length;ix++)
{
container.addElement((data.imageArray as Array)[ix]);
}
}
}
これを正しく行っている場合、どのアプローチが最適かを知りたいです。上記のもの、または ContentCache でキャッシュとキューイングが有効になっている画像 contentLoader を使用する次のものを示します。
protected function view1_creationCompleteHandler(event:FlexEvent):void
{
{
for(var i:int = 0; i<36;i++)
{
var img:Image = new Image();
img.contentLoader = ldr;
img.contentLoaderGrouping = 'gr1';
img.source = 'assets/0'+i.toString()+'.png';
container.addElement(img);
}
}
<fx:Declarations>
<s:ContentCache id="ldr" enableQueueing="true"
maxActiveRequests="1" maxCacheEntries="36"/>
</fx:Declarations>
また、誰かが contentLoaderGrouping の目的を教えてくれたら。私は非常に感謝されます。どうもありがとう!!!
PS:ちなみに、両方のアプローチが機能します。最初のアプローチはインスタントですが、2 番目のアプローチは、実際にクールな効果を与える非常にスムーズな方法で画像が追加されていることを示しています。