绘制功能导致应用程序滞后

动臂

我正在使用绘图功能突出显示插入到高分表中的分数,但是当我尝试离开高分层时,我发现应用程序滞后了。我还比较陌生,cocos2d所以我想知道是否有更好的方法,这样才不会造成任何滞后。我发现如果我注释掉此功能,那没有任何滞后。这是我的代码:

- (void)draw {
    [super draw];

    if(currentScorePosition < 0 || currentScore==0) return;


    float w = 320.0f;
    float h = 20.0f;
    float x = (320.0f - w) / 2.0f;
    float y = 230.0f - currentScorePosition * h;

    CGPoint vertices[4];


    vertices[0] = ccp(x, y);
    vertices[1] = ccp(x+w, y);
    vertices[2] = ccp(x+w, y+h);
    vertices[3] = ccp(x, y+h);


    CCDrawNode *draw = [[[CCDrawNode alloc] init] autorelease];

    [draw drawPolyWithVerts:vertices count:4 fillColor:ccc4f(0.5, 0.5, 0.8, 0.5) borderWidth:2.0 borderColor:ccc4f(0.0, 0.0, 0.0, 0.0)];

    [self addChild:draw z:0 ];

}
学习Cocos2D

您正在每帧创建一个新的CCDrawNode。随着时间的推移,这将减慢游戏的速度,因为它必须绘制越来越多的绘制节点。

解决方案:预先创建一个绘制节点并将其添加为子节点。在ivar中保留对其的引用。仅使用此单个绘制节点执行绘制。

请注意,CCDrawNode的绘制方法仍然是附加的。如果您只想绘制一个多边形并随时间更新它,则必须在绘制之前调用clear:

[theDrawNode clear];
[theDrawNode drawPolyWithVerts:vertices 
                         count:4 
                     fillColor:ccc4f(0.5, 0.5, 0.8, 0.5) 
                   borderWidth:2.0
                   borderColor:ccc4f(0.0, 0.0, 0.0, 0.0)];

另一个注意事项:您可以在draw方法之外使用draw节点。实际上,如果您像执行代码那样运行代码,则在下一个帧之前将不会绘制draw节点,因此它将始终落后1帧。使用计划的更新方法来更新绘图节点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

LinearLayout.setVisibility(View.VISIBLE) 导致 android 应用程序滞后

来自分类Dev

如何在火花流应用程序中使用滞后/超前功能?

来自分类Dev

Swift 绘图应用程序滞后

来自分类Dev

带计时器的绘图应用程序。绘制不到 20 秒后,计时器开始滞后

来自分类Dev

Android应用程序,活动启动滞后于viewpager

来自分类Dev

如何减少NCurses C应用程序中的输入滞后

来自分类Dev

为什么我的线程使JavaFX应用程序滞后?

来自分类Dev

是什么原因导致“必须设置'应用程序使用的设备'的必需功能'refId'”

来自分类Dev

哪些功能会导致我的 C# 应用程序被检测为病毒?

来自分类Dev

在Android imageView上绘制应用程序

来自分类Dev

DirectX应用程序不会绘制

来自分类Dev

使用 Unity 绘制应用程序

来自分类Dev

HttpWebRequest导致应用程序挂起

来自分类Dev

InteractivePopGestureRecognizer导致应用程序冻结

来自分类Dev

httppost导致应用程序崩溃

来自分类Dev

Cryptoki dll导致应用程序崩溃

来自分类Dev

jedis psubscribe导致应用程序挂起

来自分类Dev

反应:setState导致应用程序崩溃

来自分类Dev

使用Proguard导致应用程序崩溃

来自分类Dev

onClickListener导致应用程序崩溃

来自分类Dev

InteractivePopGestureRecognizer导致应用程序冻结

来自分类Dev

多个fetchRequests导致应用程序冻结

来自分类Dev

iTextG导致应用程序崩溃(Android)

来自分类Dev

由于NullPointerException而导致应用程序崩溃

来自分类Dev

TextView导致应用程序崩溃

来自分类Dev

ViewPagerIndicator导致应用程序崩溃

来自分类Dev

sockettimeoutexception导致应用程序挂起

来自分类Dev

webview导致应用程序崩溃

来自分类Dev

ClassCastException 导致应用程序停止

Related 相关文章

热门标签

归档