"ScheduledTimerWithTimeInterval:" problém Cocos2d?

hlasů
0

Snažím se vyvinula aplikaci pro iPhone pomocí Cocos2d. I s použitím „scheduledTimerWithTimeInterval“ pro volání metody, která požadovala fixní časový interval. Ale nyní nastal čas se zvyšuje interval postupně. Z tohoto důvodu je čas pomalu postupně. Zde je můj kód:

- (void) methodTime: (id) sender{

    NSTimer *rat =[NSTimer scheduledTimerWithTimeInterval:(.5) target:self selector:@selector(rotation:) userInfo:nil repeats:YES]; 
}

- (void) rotation:(NSTimer *)theTimer{

    NSLog(@I m  # %i, i);
    i=i+10;   // Here , i is a global int variable.
    i=i % 1440;
        if(i==0){
            [theTimer invalidate];

        }
        else {
         int rotationNum=i;
        Sprite *sp = [Sprite spriteWithFile: @1.png];
        sp.position=cpv(220,180.5);
        sp.rotation=rotationNum;
        [self add:sp];      
        }

}
Položena 04/02/2009 v 14:09
zdroj uživatelem
V jiných jazycích...                            


5 odpovědí

hlasů
0

Měl jsem potíže pochopit otázku. Ani jsi použit jeden uvozovky v ‚otázky‘.

Je možné, že váš kód potřebuje více než 0,5 sekundy spustit? Zejména proto, že množství vykonané práce na pozadí zvyšuje každé iteraci. (Více sprites.)

Snažte se, aby tato funkce rychleji, například zatížení, které PNG do paměti a ne načíst při každém ze souboru. (To je lepší pro paměť tak jako tak.)

Btw: To smyčka vypadá nebezpečně jako nekonečné smyčce. (I když by mohlo být, že to funguje ...)

Odpovězeno 04/02/2009 v 14:24
zdroj uživatelem

hlasů
0

Pokud vše, co děláte, se neustále otáčí objektu CATransforms a Core Animation může být lepší volbou.

Odpovězeno 04/02/2009 v 17:02
zdroj uživatelem

hlasů
2

Vypadá to, že každých 0,5 sekundy přidáváte sprite do jisté seznamu skřítků. Nakonec seznam je stále velmi velké a že data způsobí metodu trvat déle než 0,5 sekundy spustit. To způsobí, že časovač rychle, jak je to možné, což není tak jednoduché, protože je to vždy čeká na vaše metoda by měla být dokončena s ohněm.

Aniž by vědět více o vašem kódu, to je můj nejlepší odhad.

Odpovězeno 05/02/2009 v 12:07
zdroj uživatelem

hlasů
0

Chtěl bych použít Cocos2d-iphone je postaven v intervalech.

Projděte demo Cocos projektu, a uvidíte, jak se věci, jako je to „má“ být provedeno v rámci Cocos.

Odpovězeno 05/02/2009 v 12:34
zdroj uživatelem

hlasů
2

Nepoužívají NSTimer. Podívejte se na Cocos2d osvědčené postupy .

Odpovězeno 07/02/2009 v 02:22
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more