У меня есть объект, который я создаю, что вызывает у меня некоторые проблемы с сохранением. Я делаю объект, на котором анимация повторяется навсегда. Когда я удаляю строку, которая добавляет анимацию и повторяется, она не сохраняется, но когда я добавляю строку обратно, я могу сказать, используя инструменты, которые сохраняются в объекте. Вот код, который я использую. Не знаю, в чем проблема.CAAction вызывает удержание
- (id)initWithConveyorId:(int)conveyorId {
self = [super init];
if (self) {
self.conveyorId = conveyorId;
self.zOrder = kZLevelWaterTile;
[self setFlowTexture];
}
return self;
}
- (void)setFlowTexture {
NSMutableArray *animationFrames = [NSMutableArray array];
for (int i=1; i<=kNumberOfDirections; i++) {
[self addAnimationFrameToArray:animationFrames withIndex:i andFlow:kWest];
}
[self runAnimationWithFrames:animationFrames];
}
- (void)addAnimationFrameToArray:(NSMutableArray*)animationFrames withIndex:(int)index andFlow:(NSString*)flow{
NSString* textureName = [NSString stringWithFormat:kTextureFlow, flow];
CCSpriteFrame* frame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:
[NSString stringWithFormat:kSpriteFrame, textureName, index]];
[animationFrames addObject:frame];
}
- (void)runAnimationWithFrames:(NSMutableArray*)animationFrames {
CCAnimation* flowAnimation = [CCAnimation animationWithSpriteFrames:animationFrames delay:0.1];
CCAction* flowAction = [CCRepeatForever actionWithAction:
[CCAnimate actionWithAnimation:flowAnimation]];
[self runAction:flowAction];
}
любое понимание того, почему это вызывает удержание, было бы здорово! Благодаря!
EDIT:
вот код, который создает конвейер. методы внутри этого метода являются убедительными методами. Я тестировал тезисы, и единственная проблема, которую я получаю, - это добавить анимацию с помощью CCAction.
- (void)constructRiverWithMaximum:(int)amount {
FFTile* freeTile = [self.matrix getFreeTile];
FFConveyor* currentConveyor = [[FFConveyor alloc] initWithConveyorId:self.conveyorId];
[self replaceTile:freeTile to:currentConveyor];
amount--;
int countConveyorsOnRiver = 1;
// FFConveyor* currentConveyor = firstConveyor;
BOOL hasNext;
FFConveyorFlow directionOfLastTile = FFConveyorFlowNoDirection;
int count = 0;
do {
int x = currentConveyor.columnIndex;
int y = currentConveyor.rowIndex;
NSArray* weights = [self getWeightsByX:x Y:y];
NSArray* probabilities = [self getProbabilitiesByWeights:weights standardWeight:self.standardWeight];
int directionOfCurrentTile = [self defineDirection:probabilities withConveyorCount:countConveyorsOnRiver];
if (directionOfCurrentTile == kConveyorOver) {
hasNext = false;
directionOfCurrentTile = directionOfLastTile;
}
else {
if (amount <= 0){
hasNext = false;
} else {
hasNext = true;
}
}
[self setFlowDirectionFrom:directionOfLastTile to:directionOfCurrentTile forConveyor:currentConveyor];
currentConveyor = [self switchToTurningConveyorIfNeededForConveyorTile:currentConveyor];
//[currentConveyor setFlowTexture];
directionOfLastTile = directionOfCurrentTile;
if (hasNext) {
int conveyorIndex = [self.matrix nextIndexByX:x Y:y direction:directionOfCurrentTile];
FFTile* tile = [self.matrix.tiles objectAtIndex:conveyorIndex];
if ([self.matrix isTileFree:tile]){
currentConveyor = [self createConveyorAtIndex:conveyorIndex];
amount--;
countConveyorsOnRiver++;
} else {
hasNext = false; //end because find another conveyor tile
}
}
count++;
} while (hasNext);
self.conveyorId++;
}
В чем проблема? какой объект сохраняется? Почему у вас проблема? – YvesLeBorg
удерживаемый объект является конвейерным объектом. сохранение является проблемой, потому что, как только пользователь завершит уровень, его слом и новый будут введены, поэтому этот должен быть отменен. – user1179321
отправьте код, где создается и используется конвейер – LearnCocos2D