• <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>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            TickableObjects 和 ITickable

            來源:http://www.torquecn.com/%E5%B1%B1%E4%B8%8A/archive/2007/01/24/14.aspx


            ickable 對象以一個固定的tick速率來接收更新(消息)。每個tickable對象都要確保每隔32毫秒進(jìn)行一次更新(默認(rèn)).但這個并不意味著每個32毫秒對 象一定會有一個tick,對于每幀需要進(jìn)行大量數(shù)據(jù)處理的環(huán)境,將會導(dǎo)致一種情形,在這種情形下,對象在某個時間T接收到一個tick,直到T+64才得 到另一個tick,這樣在T+64的時刻這個對象將會收到兩個tick,就超出了每32毫秒刷新一次的約定.

            創(chuàng)建 Tickable對象

            為了創(chuàng)建一個tickable對象,你需要做的就是從Itickable繼承. ITickable 設(shè)計就是用在多重繼承的環(huán)境,它是一個很簡單的類。還有其它特殊的可以運行Itickable的類,比如GuiTickCtrl.作為舉例,下面就展示了 如何創(chuàng)建一個tickable SimObject:

            class FooClass : public SimObject, public virtual ITickable

            {

               // You still mark SimObject as Parent

              typedef SimObject Parent;

            private:

               ...

            protected:

               // These three methods are the interface for ITickable

               virtual void interpolateTick( F32 delta );

               virtual void processTick();

               virtual void advanceTime( F32 timeDelta );

            public:

              ...

            };

            上面的方法就是讓一個對象執(zhí)行ITickable 接口所需要的,ITickable 是個純虛類,這就意味這,這些方法必須至少有一個實例。同樣,類似于這個的多重繼承環(huán)境,typedef 不應(yīng)該定義ITickable,但是可以用來定義適當(dāng)?shù)幕?。ITickable 僅僅是一個接口。繼承來自ITickable 的屬性,

             

            ITickable接口

            Itickable接口由三個方法組成

            processTick

            processTick這個方法在每次tick的時候被調(diào)用,如果這個對象的 isProcessingTicks返回為真。默認(rèn)下, ITickable::isProcessingTicks 的返回值是ITickable::mTickable (通過公共方法ITickable::setProcessTick 來設(shè)定)。當(dāng)以一個固定速率處理時,所有的代碼都應(yīng)該在這個方法中完成.

            interpolateTick

            如果isProcessingTicks 的返回值為真,則這個方法每幀都會被調(diào)用。她允許Tickable對象在ticks之間進(jìn)行插值.它包含有一個32位的浮點值,這個浮點值代表當(dāng)前到下個 tick之間的時間,以一個百分比來表達(dá)。這個delta時間可以用下面的方式進(jìn)行描述:

              delta time = time until next tick / total time per tick

            therefore the delta time approaches zero as the simulation moves closer to the next tick. 也就是說delta時間越接近零,那么相當(dāng)于越接近于下個tick。

            advanceTime

            Every frame an ITickable object will recieve advanceTime methods regardless of the return value of isProcessingTicks. 每幀,不管isProcessingTicks返回值是多少,ITickable 對象將會接收advanceTime方法。這個方法有一個32位的表示時間量的浮點值,單位秒,從上次調(diào)用advanceTime以來的時間。



            posted on 2007-05-30 17:57 楊粼波 閱讀(255) 評論(0)  編輯 收藏 引用

            久久综合狠狠综合久久| 一本久久a久久精品综合香蕉| 久久婷婷五月综合国产尤物app | 97超级碰碰碰久久久久| 久久久久久精品成人免费图片| 久久91精品综合国产首页| 久久香蕉国产线看观看99| 91精品国产9l久久久久| 久久国产乱子伦免费精品| 日日躁夜夜躁狠狠久久AV| 亚洲va久久久噜噜噜久久狠狠| 久久综合亚洲色一区二区三区| 免费精品国产日韩热久久| 一本大道久久香蕉成人网| 亚洲国产成人久久综合一区77| 日韩久久久久中文字幕人妻| 色婷婷狠狠久久综合五月| 色99久久久久高潮综合影院| 久久综合色老色| 久久人与动人物a级毛片| 亚洲欧洲日产国码无码久久99| 久久精品国产99国产精品亚洲| 亚洲AV日韩精品久久久久久| 久久久久AV综合网成人| 国产精品99久久精品| 91久久精品视频| 欧洲国产伦久久久久久久| 久久婷婷是五月综合色狠狠| 亚洲综合熟女久久久30p| 国产V综合V亚洲欧美久久| 久久国产精品久久| 久久涩综合| 精品伊人久久大线蕉色首页| 久久人人爽人人爽人人AV| 久久最新精品国产| 婷婷久久综合| 人妻丰满AV无码久久不卡| 国产69精品久久久久99尤物| 四虎国产精品成人免费久久| 精品国产99久久久久久麻豆| 国产精品久久99|