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

            創(chuàng)建 Tickable對(duì)象

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

              ...

            };

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

             

            ITickable接口

            Itickable接口由三個(gè)方法組成

            processTick

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

            interpolateTick

            如果isProcessingTicks 的返回值為真,則這個(gè)方法每幀都會(huì)被調(diào)用。她允許Tickable對(duì)象在ticks之間進(jìn)行插值.它包含有一個(gè)32位的浮點(diǎn)值,這個(gè)浮點(diǎn)值代表當(dāng)前到下個(gè) tick之間的時(shí)間,以一個(gè)百分比來表達(dá)。這個(gè)delta時(shí)間可以用下面的方式進(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時(shí)間越接近零,那么相當(dāng)于越接近于下個(gè)tick。

            advanceTime

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



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


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久国产AVJUST麻豆| 久久美女人爽女人爽| 久久亚洲熟女cc98cm| 亚洲精品高清一二区久久| 欧美熟妇另类久久久久久不卡| 91精品国产高清91久久久久久| 精品久久久久久无码中文野结衣 | 亚洲另类欧美综合久久图片区| 亚洲AV无码久久寂寞少妇| 99久久精品国内| 中文国产成人精品久久不卡| 99久久精品日本一区二区免费| 久久艹国产| 国产精品美女久久久久久2018| 久久久久亚洲AV无码专区网站 | 午夜不卡久久精品无码免费| 国产日韩久久免费影院| 99re这里只有精品热久久| 无码八A片人妻少妇久久| 久久久久久久久久免免费精品| 久久国产高清字幕中文| 少妇高潮惨叫久久久久久 | 久久国产精品99精品国产| 久久久久久曰本AV免费免费| 香蕉99久久国产综合精品宅男自| 国产高清国内精品福利99久久| 青青草原综合久久| 91精品国产91久久久久久青草| 99久久中文字幕| 97久久精品无码一区二区天美 | 色88久久久久高潮综合影院 | 99久久精品国产高清一区二区| 亚洲国产另类久久久精品小说| 久久精品国产精品亚洲精品| 亚洲国产婷婷香蕉久久久久久| 一本一道久久a久久精品综合| 久久人人爽人爽人人爽av| 热RE99久久精品国产66热| 日本亚洲色大成网站WWW久久| 久久久99精品成人片中文字幕| 国内精品久久久久久久亚洲|