• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            ACG狂人

            其實(shí)我更愛姐汁...

            關(guān)于MVC PropertySet OperatorStack的一些設(shè)計思考

            最近在給公司里碼一個場景編輯器,大致得實(shí)現(xiàn)的功能有:
            地形高度刷
            地形紋理刷
            放置小物件和房屋
            放置粒子系統(tǒng)
            設(shè)置路徑點(diǎn)和只能攝像機(jī)點(diǎn)

            算是個簡單的不能再簡單的場景編輯器了吧...但是這樣的一個工具還是很頭痛的,特別是用C++來寫...
            頭痛的原因不是別的,正是這個表現(xiàn)層和后臺數(shù)據(jù)同步問題。這個在C++的UI庫中目前還真沒有什么現(xiàn)成的好辦法,于是開始造輪子,為MFC寫了PropertySet和OperatorStack。
            首先這個UI數(shù)據(jù)和內(nèi)存數(shù)據(jù)雙向同步的問題直接讓我崩潰了...由于以前寫過一些工具,知道這東西如果不做個設(shè)計就開始沖著功能寫的話會有什么后果。嗯,于是繼承封裝了CMFCPropertyGridCtrl控件,為每個葉子屬性項封裝了一個LeafItem,根據(jù)屬性名來更新PropertySet里對應(yīng)的數(shù)據(jù)......具體實(shí)現(xiàn)幾千字略- - 最終成型時代碼這樣:
            DynamicObject obj;
            propertyGrid.attachObject(obj);
            這里的DynamicObject繼承PropertySet,于是propertyGrid控件就會顯示obj里所有的屬性數(shù)據(jù)了...然后是雙向更新問題,目前是給Property里加了一個eventValueChanged事件響應(yīng),讓PropertyGridCtrl監(jiān)聽這些數(shù)據(jù)的變化,而propertyGridCtrl這個UI上的數(shù)據(jù)變化同樣是派生實(shí)現(xiàn)CMFCPropertyGridCtrl的值變化響應(yīng)函數(shù)來給綁定的LeafItem更新數(shù)據(jù),也是直接就刷新到Property里了。
            還有OperatorStack.....這個是操作棧,記錄用戶操作的,用于撤銷和重做的操作,也用到了PropertySet來記錄變化對象的屬性快照,嗯,叫SnapShootRecord的類里面記錄的都是一個對象的變化屬性。
            先就記錄這么多,很亂很不容易懂,主要給我自己做個記錄的,沒啥貢獻(xiàn),實(shí)際上還有很多不好用的地方,所以最近在想一些改進(jìn)設(shè)計,等我想好了放上來詳細(xì)設(shè)計和源碼吧.......

            posted on 2010-11-20 19:30 釀妹汁 閱讀(2057) 評論(2)  編輯 收藏 引用 所屬分類: C++

            評論

            # re: 關(guān)于MVC PropertySet OperatorStack的一些設(shè)計思考 2010-11-20 22:02 戰(zhàn)魂小筑

            QT Please  回復(fù)  更多評論   

            # re: 關(guān)于MVC PropertySet OperatorStack的一些設(shè)計思考 2010-12-22 18:37

            QT個蛋蛋......
            編個QT能把我小電腦的硬盤折騰壞了.....
            開個玩笑...實(shí)際上我是不適應(yīng)QT的那種奇怪的感覺,怎么說呢......
            自帶的編輯器用的不好用,給vs上個ui編輯插件又感覺很蹩腳,于是果斷放棄......  回復(fù)  更多評論   

            91视频国产91久久久| 精品久久久久久国产| 亚洲国产成人乱码精品女人久久久不卡| 久久久久国产精品| 欧美国产成人久久精品| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品一区二区三区不卡| 狠狠色伊人久久精品综合网 | 久久精品中文无码资源站| 无码国内精品久久人妻蜜桃 | 国产一区二区三精品久久久无广告 | 亚洲精品乱码久久久久久按摩| 香港aa三级久久三级| 性色欲网站人妻丰满中文久久不卡| 狠狠色丁香婷综合久久| 国产成人精品久久| 伊人 久久 精品| 97久久精品人人做人人爽| 国产精品免费福利久久| 99久久香蕉国产线看观香| 国产精品成人精品久久久| 久久久精品国产sm调教网站| 亚洲v国产v天堂a无码久久| 大美女久久久久久j久久| 99久久精品日本一区二区免费| 精品国产99久久久久久麻豆| 久久人人爽人人爽AV片| 久久久久久国产精品美女| 国产激情久久久久影院小草| 久久久久久综合一区中文字幕| 久久久久久久人妻无码中文字幕爆| 久久伊人五月丁香狠狠色| 午夜精品久久久久久影视777| 色婷婷久久久SWAG精品| 思思久久好好热精品国产| 日韩人妻无码一区二区三区久久99| 久久只这里是精品66| 久久中文字幕人妻丝袜| 青草国产精品久久久久久| 91精品国产综合久久婷婷| 91久久婷婷国产综合精品青草|