Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 不在主线程上运行计时器,并创建清晰的外部函数_Objective C_Cocos2d Iphone - Fatal编程技术网

Objective c 不在主线程上运行计时器,并创建清晰的外部函数

Objective c 不在主线程上运行计时器,并创建清晰的外部函数,objective-c,cocos2d-iphone,Objective C,Cocos2d Iphone,这是一个基本问题,可能会“暴露”我对事物的错误理解 使用一些物理引擎,我正在创建自己的函数。 其中一些正在使用计时器(在我的例子中是cocos2d计时器:CCSchedulde@selector())。 我的目标是建立一个类,我可以在需要做一些动作的地方使用它 问题: 调用该函数后,该函数必须使用timer更新一些位置,但当我将其放入其他类并创建其实例时,计时器将不会运行。在主线程上运行它对我来说似乎有点不健康。“正确”的方法是什么 2.如何在另一个类中创建该函数,以便像使用cocos2d引擎一

这是一个基本问题,可能会“暴露”我对事物的错误理解

使用一些物理引擎,我正在创建自己的函数。 其中一些正在使用计时器(在我的例子中是cocos2d计时器:
CCSchedulde@selector()
)。 我的目标是建立一个类,我可以在需要做一些动作的地方使用它

问题:

  • 调用该函数后,该函数必须使用timer更新一些位置,但当我将其放入其他类并创建其实例时,计时器将不会运行。在主线程上运行它对我来说似乎有点不健康。“正确”的方法是什么
  • 2.如何在另一个类中创建该函数,以便像使用cocos2d引擎一样使用它:

    id action=[CCActionName ....]  //than i can use action. where is the allocation and initialization?
    
    他们的道路似乎比:

    classA *action=[classA alloc]init];
    [action functionName:argument]
    
    我如何创建我的另一个类,使其看起来像他们的类

    现在我这样做:

    ClassA.h
    int A1;
    int B1;
    
    classA.m
        -(void)initWith:(int)A AndB:(int)B
        {
            A1=A;
            B1=B;
            [run timer function] //COCOS OR NS
        }
    
    
        -(void)timer:(cctime)dt   //does not work -its other class and not main thread
        {
            do the action till something .
        }
    
    答复:

    一,

    当您试图在另一层上使用cocos2d计时器而不添加该层时,它不会启动计时器(这是添加它们的
    CCLayer
    的本质…),因此请改为创建NSObject类

    二,

    我发现了一些我喜欢的结构,如果我错了,我希望这里的人会纠正我

    所以我创建了
    rootClass
    。它有一些功能(动作),当执行时,他创建另一个类的实例-
    classA
    ,其中该类在启动时设置计时器:

    rootclass.m
    -(void)doActionWith:(int)a
    {
       classA *A=[classA alloc]init];
       [A doActionWith:(int)a];
    }
    
    A.m
    
    -(void)doActionWith:(int)a
    {
     localV=a;
    [start NSTimer];
    }
    
    -(void)timer:(NSTimer*)me
    {
       use the localV that got its values
       update things till done...
    }
    
    than,当我们想要使用它时,我们继承
    rootClass
    ,而要使用来自的操作,我们不必分配或创建实例,我们只需执行以下操作:

    [self doActionWith:a ] // calls the root class that create a NEW instance of an action class A
    
    在没有分配的情况下,我们可以做多少我们想要的动作。 许多类似的操作都可以添加到rootClass中。 希望这会有帮助,这是一种好的态度