zoukankan      html  css  js  c++  java
  • 继承CCSprite初始化出现的问题

    CCSprite的各种initWithXXX方法中都会调用init方法:

    -(id) initWithXXX {
       self =  [self init];
    }

    所以在你的ccsprite子类的init方法中不要调用除[super init]之外的任何initWithXXX方法,否则就会出现递归的执行init的问题。
    错误代码:

    -(id) init
    {
        self = [super init];
        if (self)
        {
            [self initWithFile:@"BlueFish.png"]; //因为此处调用了CCsprite中的initWithFile:方法会重复递归调用init,生成死循环
        }
        return (self);
    }

    正确代码:
    @implementation OrbSprite
    -(id) init
    {
       if( (self=[super init]) )
       {
             //此处可处理一些成员变量,但不要调用任何initWithXXX;
        }
       return self;
    }
    @end

    一般情况下,想生成自己的精灵时就加载完图片时可以自己其一个方法名字,不覆盖CCSprite的原方法,如:

    - (id) initMyOwnSprite

    {

      self = [super init];

      if(self)

      {

        self = [super initWithFile:"myImage.png"];

      }

    }//这样生成精灵时调用此方法就会自动加载此图片,不会循环调用

  • 相关阅读:
    去哪儿网门票数据爬虫更新
    每周进度总结12
    每日进度总结20
    每日进度总结19
    每日进度总结18
    每日进度总结17
    每日进度总结16
    每日进度总结15
    每日进度总结14
    每周进度总结11
  • 原文地址:https://www.cnblogs.com/hellocby/p/2637652.html
Copyright © 2011-2022 走看看