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