关于SYMBIAN源码中有段问题,请教大家(求解,在线等待)
1.-------------------------------------------------------------------------------------------------------------
在这个源码中定义了个MMODEL iCurrentModel和RPointerArray< MModel >iModel,iCurrentModel他是个纯虚类。iModel分别添加了A1,A2,A3。A1到A3都实例化了ActivateL()。不过这里遇到一个问题
iGameModel = CModelGame::NewL( this );
iModel.Append( CModelTitle::NewL( this ) );
iModel.Append( iGameModel );
iModel.Append( CModelHelp::NewL( this ) );
iChangeModel = EFalse;
iCurrentModel = iModel[ EModelTitleScreen ];// EModelTitleScreen?
iCurrentModel->ActivateL();//这个ActivateL()具体是调用那个的了?
iCurrentModel->ActivateL();这个ActivateL()具体调用那个了是3个都调用还是,只调用一个了?
2.-------------------------------------------------------------------------------------------------------------
关于位图,我接触的位图知识使用CompleteWithAppPath(file);Load(file);
在这个源码中为什么使用备份位图了?哪位大哥能帮我介绍下这个备份位图的作用,为什么要使用他了?
CreateBackedUpWindowL( CCoeEnv::Static()->RootWin() );//RootWin();这个函数有什么用了,这个源码中很多地方使用到
BackedUpWindow().MaintainBackup();
TInt wh = BackedUpWindow().BitmapHandle();
SetExtentToWholeScreen();
TInt wh = BackedUpWindow().BitmapHandle();
iBitmap.Duplicate( wh );
3-------------------------------------------------------------------------------------------------------------
case EColor4K:
{
longword = aRgb.Color4K();
//Color4K()获取价值指数最接近TRgb这个基础上,匹配的显示模式。
longword |= longword << 16;//???这段代码什么左右,|=
break;
}
4-------------------------------------------------------------------------------------------------------------
还有这段代码,始终没有理解
for( i=0; i<8; i++ )
{
file.Copy( iSystem->Path() );
file.Append( _L("player.mbm" ) );
CBitmap* bmPlayer = CBitmap::NewL( file, i );
bmPlayer->SetMaskColor( 0 );
iSprPlayer->AddSpriteBmp( bmPlayer );//添加子画面。这里调用void CSprite::AddSpriteBmp
}
void CSprite::AddSpriteBmp( CBitmap* aBitmap )
{
iBitmaps.Append( aBitmap );
}
//这怎么使用循环,那不是重复创建BITMAP?重复执行?player.mbm确实存在,那不是添加了8次,就是8份地图了??