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


            99久久99久久精品免费看蜜桃| 久久国产视屏| 粉嫩小泬无遮挡久久久久久| jizzjizz国产精品久久| 91精品国产91久久久久久| 久久最新免费视频| 久久国产免费观看精品3| 精品久久综合1区2区3区激情| 亚洲中文字幕伊人久久无码 | 久久久亚洲精品蜜桃臀| 亚洲精品无码久久一线| 很黄很污的网站久久mimi色| 久久综合久久自在自线精品自| 99久久亚洲综合精品网站| 亚洲va中文字幕无码久久不卡 | 久久av免费天堂小草播放| 色综合久久无码五十路人妻| 亚洲Av无码国产情品久久| 丁香久久婷婷国产午夜视频| 久久久噜噜噜久久熟女AA片| 久久笫一福利免费导航 | 久久久久久a亚洲欧洲aⅴ| 亚洲女久久久噜噜噜熟女| 久久综合亚洲鲁鲁五月天| 精品久久久久久久中文字幕| 久久久久国产精品| 人人狠狠综合久久亚洲88| 97久久香蕉国产线看观看| 久久精品人人做人人爽97 | 久久久久人妻一区精品色| 国产精品99久久久久久宅男小说| 久久国产视频99电影| 久久精品国产精品亜洲毛片| 伊人久久免费视频| 久久青草国产精品一区| 国产精品一久久香蕉国产线看观看| 日本久久久久亚洲中字幕| 无码精品久久久天天影视| 久久亚洲私人国产精品| 91久久精品91久久性色| 99久久成人18免费网站|