我想在CCDirector类中使用在'showStats‘方法中计算的ivar 'framerate_’值。目前,我已经在CCDirector.m/h文件中添加了一个方法来访问值,例如...
CCDirec.h:
-(ccTime)getCCFrameRate;CCDirec.m:
-(ccTime)getCCFrameRate {
return frameRate_;
}...so我现在可以像这样得到这个值:
ccTime frameRateOutput = [[MyDirector sharedDirector] getCCFrameRate];这是可行的,但我不喜欢“黑”Cocos2D框架代码。我尝试过对CCDirector进行子类化,但遇到了一些问题。感谢任何关于在不干扰框架代码的情况下获得这个'framerate_‘ivar的最佳方法的建议。谢谢
发布于 2012-12-15 16:26:49
您可以获得任何对象的任何ivar,如下所示:
Ivar iv = object_getInstanceVariable(obj, "_framerate");
void *ivp = (char *)obj + ivar_getOffset(iv);
TYPE framerate = *(TYPE *)ivp;然而,在我看来,这比扩展框架更像是一种黑客行为。
发布于 2012-12-15 22:21:13
如果您绝对希望避免修改CCDirector代码,则可以在自定义类中重新生成相同的代码。
虽然后者是绝对可以的,但只有当你升级到更新的cocos2d版本时,你才会遇到问题。在这种情况下,只需重新应用您的更改,因为它们是如此之少。
您不能轻易地将CCDirector子类化,因为它是一个单例,并且它已经有了特定于平台的子类CCDirectorIOS和CCDirectorMac。
https://stackoverflow.com/questions/13889832
复制相似问题