成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Symbian學習筆記(8)——再嘗試著做一個數獨游戲

系統
仍是做一個同樣界面同樣功能的數獨游戲,但是所花費的時間遠遠超出我用Android或者J2ME來做同樣的事情,當然運行效率也很明顯(我將J2ME實現的數獨放在N73上跑過,因為重繪屏幕的代碼沒有優化,所以效果不好,但同樣的算法在BREW或者Symbian上就跑得相當順暢)。
仍是做一個同樣界面同樣功能的數獨游戲,但是所花費的時間遠遠超出我用Android或者J2ME來做同樣的事情,當然運行效率也很明顯(我將J2ME實現的數獨放在N73上跑過,因為重繪屏幕的代碼沒有優化,所以效果不好,但同樣的算法在BREW或者Symbian上就跑得相當順暢)。

  這次我主要談談在做這個 Symbian版本中遇到的幾個問題,希望以后自己不要再犯同樣的錯誤了。

  1、多視圖的應用程序框架的問題

  我用的是Carbide C++ IDE環境,不知道為什么不能生成多視圖的架子,所以只能在HelloWorld框架的代碼上自己手工改寫,結果就弄出一個Panic折騰了我很久,問題出在千萬不要在析構函數中去刪除創建的CAknView,如下代碼(注掉是正確的,否則就在退出應用時會出錯):

CSuDoScAppUi::~CSuDoScAppUi()
...{
//    if(iAppCtrol!=NULL){
//        this->RemoveView(iAppCtrol->Id());
//        delete iAppCtrol;
//        iAppCtrol=NULL;
//        
//        RDebug::Printf("delete iAppCtrol");
//    }
//    RDebug::Printf("delete Ui");
}
 

  我們需要負責清除對象的地方是在CAknView中負責刪掉CCoeControl,因為在它的DoActivateL/DoDeactivateL兩個函數中負責創建和刪除CoeControl,但是如果退出時這個DoDeactivateL是不會主動調用的,因此在析構時可以調用一下它:

 

CSuDoScAppCtrol::~CSuDoScAppCtrol()
...{
    iFs.Close();
    iList.Close();

    DoDeactivate();
   
    RDebug::Printf("delete Ctrol");
}
 

  2、關于顯示字體的問題

  在調用CWindowGc的DrawText方法時,必須要設置一下字體否則不會有東西顯示出來,而設置字體有一段標準代碼可以參考(來源于網上):

 

CWindowGc& gc = SystemGc();
    CFont *font = NULL;
    TFontSpec fontSpec = iEikonEnv->LegendFont()->FontSpecInTwips();
    fontSpec.iHeight  -= fontSpec.iHeight / 6;   

    iCoeEnv->ScreenDevice()->GetNearestFontInTwips( font, fontSpec );   
    gc.UseFont( font );   

        // do sth.

      gc.DiscardFont();
    iCoeEnv->ScreenDevice()->ReleaseFont( font ); 

  3、關于SVG圖像的顯示

  我將所有的數字小圖片都做成SVG格式,在顯示SVG圖像的時候必須設置它的尺寸,否則也無法顯示。另外,因為制作時它的背景色為白色,所以要顯示為透明則需要用到它的MASK了。

 

for(TInt i=0,j=0;i<9;i++,j+=2)...{
        CFbsBitmap * b=NULL;
        CFbsBitmap * c=NULL;
        AknIconUtils::CreateIconL(b,c,iMFileName,EMbmSudoscY1+j,EMbmSudoscY1+j+1);        
        AknIconUtils::SetSize(b, TSize(22, 22));
        AknIconUtils::SetSize(c, TSize(22, 22));
        iThumbNormal.AppendL(b);
        iThumbNormalMask.AppendL(c);
    }
 

  iThumbNormal和iThumbNormalMask是兩個RPointerArray對象,這里我在ContructL時就加載所有的數字圖,這種方法可以有效地減輕在重繪時加載照成的閃屏。然后在顯示時這樣即可:

 

if( CSuDoScHelper::CheckGrid(iGrid,i%9,i/9,iGrid[i].value) )
    gc.BitBltMasked(TPoint(xx,yy),iThumbNormal[iGrid[i].value-1],r,iThumbNormalMask[iGrid[i].value-1], EFalse);
else
    gc.BitBltMasked(TPoint(xx,yy),iThumbError[iGrid[i].value-1],r,iThumbErrorMask[iGrid[i].value-1], EFalse);
               

  4、關于按鍵處理

  我仍是按BREW手機的模式,左軟鍵菜單,右軟鍵切換模式,*#則用來切換題目。在Symbian中對鍵值的定義比其它平臺要復雜一些,讓人有點摸不著頭腦,比如數字健沒有定義在頭文件中(不是那個EStdKeyNkp1等枚舉),只能自己去嘗試一下:

 

TKeyResponse CSuDoScAppView::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType)
    ...{
        if(aType==EEventKeyUp)
        ...{
            if( aKeyEvent.iScanCode>=EStdKeyLeftArrow && aKeyEvent.iScanCode<=EStdKeyDownArrow)
                return TreatNavKey(aKeyEvent,aType);
            else if( aKeyEvent.iScanCode>=48 && aKeyEvent.iScanCode<=57)
                return TreatNumKey(aKeyEvent,aType);
            else if( aKeyEvent.iScanCode==EStdKeyDevice1 || aKeyEvent.iScanCode==EStdKeyHash || aKeyEvent.iScanCode==EStdKeyNkpAsterisk)
                return TreatChrKey(aKeyEvent,aType);            
        }
        return EKeyWasConsumed;
    }

  5、關于消息對話框

  在顯示“解題成功”的對話框時,記得不要畫蛇添足地去消除對話框,如下面代碼中注掉的代碼是多余的:

 

TBool CSuDoScAppView::ShowSuccessDlg()
...{
    if(iState==EGSTATE_WRITE && CSuDoScHelper::CheckSuccess(iGrid))...{
        TBuf<32>    str;
        iCoeEnv->ReadResource(str,R_TEXT_SUCCESS);
        CAknInformationNote * dlg = new(ELeave) CAknInformationNote(ETrue);        
        //CleanupStack::PushL(dlg);
        
        dlg->ExecuteLD(str);
        //CleanupStack::PopAndDestroy(1);   
        
        return ETrue;
    }
    return EFalse;
}

  暫時就這些吧。

【編輯推薦】

  1. Symbian每6個月發布一款新開源操作系統
  2. 微軟建WindowsMarketplace 完善智能機平臺
  3. 大力模仿Android 傳微軟WM6.5可裝插件
責任編輯:龐桂玉 來源: it168
相關推薦

2021-12-17 10:06:42

鴻蒙HarmonyOS應用

2009-04-12 08:59:05

Symbian諾基亞移動OS

2009-04-12 09:00:08

Symbian諾基亞移動OS

2009-04-12 09:01:05

Symbian諾基亞移動OS

2009-04-12 09:02:32

Symbian諾基亞移動OS

2009-04-12 09:06:00

Symbian諾基亞移動OS

2009-04-12 09:03:50

Symbian諾基亞移動OS

2009-04-12 08:57:50

Symbian諾基亞移動OS

2009-04-12 08:55:18

Symbian諾基亞移動OS

2009-04-12 08:36:09

Symbian諾基亞移動OS

2022-07-29 14:47:34

數獨Sudoku鴻蒙

2013-08-19 10:45:36

社交游戲手機游戲

2009-04-12 08:51:50

Symbian諾基亞移動OS

2011-06-16 15:36:56

Qt Quick Symbian

2013-06-17 12:44:38

WP7開發Windows Pho數獨游戲

2022-10-19 15:19:53

數獨Sudoku鴻蒙

2022-10-19 15:27:36

數獨Sudoku鴻蒙

2022-10-18 15:45:17

數獨Sudoku鴻蒙

2009-04-12 09:07:17

Symbian諾基亞移動OS

2009-04-12 08:45:32

Symbian諾基亞移動OS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区在线观看视频 | 色综合久| 久久精品91久久久久久再现 | 精品国产91乱码一区二区三区 | 中文字幕亚洲视频 | 亚洲国产精品一区二区第一页 | 国产精品一区二区在线播放 | 精品欧美黑人一区二区三区 | 国产东北一级毛片 | 亚洲国产免费 | 99re6在线| 久久国产精品精品国产色婷婷 | av天天干 | 99热精品在线观看 | 欧美精品video | 欧洲亚洲视频 | 国产精品国产成人国产三级 | 国产一区二区三区色淫影院 | 91在线视频免费观看 | 97日韩精品 | 久久久久国产一区二区三区 | 91精品国产91综合久久蜜臀 | 第一区在线观看免费国语入口 | 国产精品乱码一区二区三区 | 在线免费亚洲视频 | 日本成人中文字幕在线观看 | 国产不卡视频 | 日韩欧美中文字幕在线观看 | 欧美久久久电影 | 日韩国产一区二区 | 亚洲二区视频 | 国产激情视频 | 日本成人综合 | 国产欧美日韩精品一区 | 日本精品一区 | 久久精品国产久精国产 | 欧美一级欧美三级在线观看 | 日本在线看片 | 男女午夜免费视频 | 精久久久久 | 日韩在线观看网站 |