我遇到了一些我以前从未见过的问题,这些问题是我几年前用cocos2d cocos2d v1.1.0-beta2b编写的。
基本上,我所要做的就是在屏幕上移动Domino(CCNode SubClass)。一轮完成后,确定胜利者并将多米诺骨牌移到屏幕右侧......或者应该是。
使用非64位设备时,95%的情况会发生这种情况。
但是,有时会发生以下情况。由于某种原因,其中一个瓷砖根本没有移动。
最后,当我使用64位模拟器时,我得到了这个
这里的瓷砖正在移动,但它们并没有旋转。我减慢了持续时间,看看我是否可以分辨出发生了什么,它似乎被射了3次。
这是代码。我究竟做错了什么?直到最近,我才从未遇到过此代码的问题。
-(void)determinetrickwinner: (NSArray *) table
{
[self unscheduleAllSelectors];
...
for (int i = 0; i <[table count]; ++i)
{
if (int_winningplayer==1)
{
pos_x=int_X1o+int_X1*i;
pos_y=int_Y1o+(int_player1wincounter-1)*int_Y1;
}
if (int_winningplayer==2)
{
pos_x=int_X2o+int_X2*i+int_X1*3*1.08;
pos_y=int_Y2o+(int_player2wincounter-1)*int_Y2;
}
if (int_winningplayer==3)
{
pos_x=int_X2o+int_X2*i+int_X1*6*1.08;
pos_y=int_Y2o+(int_player3wincounter-1)*int_Y2;
}
Domino *temp_tile = table[i];
temp_tile.scale=flt_scale;
CCDelayTime *delay=[CCDelayTime actionWithDuration:.01f];
CCMoveTo * translate = [CCMoveTo actionWithDuration:.1f position:ccp(pos_x,pos_y)];
CCRotateTo * rotLeft = [CCRotateBy actionWithDuration:.1f angle:90.f];
CCSequence * rotSeq = [CCSequence actions:translate, delay, rotLeft, nil];
[temp_tile runAction:rotSeq];
NSLog(@"i=%d",i);
}
if (int_numberoftricks<7)
{
if (int_winningplayer==1)
{
str= player1;
//boo_player1move=true;
[self schedule: @selector(startPlayer1moves) interval:.25];
}
if (int_winningplayer==2)
{
str= player2;
[self schedule: @selector(Player2Moves) interval:1.3];
}
if (int_winningplayer==3)
{
str=player3;
[self schedule: @selector(Player3Moves) interval:1.3];
}
[currentplayer setString:str];
}
}