3

allyMonserCCSprite(継承)です。スケジュールを使用すると、allyMonsterNULLなりaction()ます。しかし、私がaction()直接電話するときは、そうでallyMonsterはありませんNULL、それは正常です。

このコードを実行すると、ログに次のように表示されます。

1, 0x23ds566
2, 0xfffffff

理由を知りたい1, 0x23ds566-> 2, 0xfffffff。なぜ変わるのですか?

void AMS_Moving::runAction()
{
    allyMonster->unscheduleAllSelectors();
    allyMonster->stopAllActions();
    allyMonster->schedule( schedule_selector( AMS_Moving::action ) );

    CCLog("1. %x", allyMonster);
}

void AMS_Moving::action()
{
    CCLog("2. %x", allyMonster);
    ...
    ...
}
4

1 に答える 1

0

その理由は、スケジュールされた関数を実行するときに、必要な関数を指しているのではなく、他の何かを指しているためだと思います。

void AMS_Moving::action() 

間違っている。デフォルトでは、すべてのスケジュール関数は入力 ccTime dt を受け取る必要があります。

void AMS_Moving::action(ccTime dt)
于 2012-09-10T23:06:36.550 に答える