Iphone nsarray每秒随机切换图像纹理
我有一个数组,有两个气球纹理,一个是绿色,一个是红色。我在应用程序的开头有12个绿色气球对象。基本上我希望每秒钟有一个随机的绿色气球变为红色。如果有人能帮忙,我将不胜感激 初始方法Iphone nsarray每秒随机切换图像纹理,iphone,ios,objective-c,Iphone,Ios,Objective C,我有一个数组,有两个气球纹理,一个是绿色,一个是红色。我在应用程序的开头有12个绿色气球对象。基本上我希望每秒钟有一个随机的绿色气球变为红色。如果有人能帮忙,我将不胜感激 初始方法 balloonTextures = [NSMutableArray array]; [balloonTextures addObject:[SPTexture textureWithContentsOfFile:@"greenballoon.png"]]; [balloonTextures a
balloonTextures = [NSMutableArray array];
[balloonTextures addObject:[SPTexture textureWithContentsOfFile:@"greenballoon.png"]];
[balloonTextures addObject:[SPTexture textureWithContentsOfFile:@"redballoon.png"]];
[balloonTextures retain];
playFieldSprite = [SPSprite sprite];
[self addChild:playFieldSprite];
[self addBalloon];
加气球法
-(void)addBalloon
{
for(int i = 0; i < 12; i++)
{
SPImage *image = [SPImage imageWithTexture:[balloonTextures objectAtIndex:0]];
image.x = 40*i;
image.y = 10 ;
[playFieldSprite addChild:image];
}
}
-(void)addBalloon
{
对于(int i=0;i<12;i++)
{
SPImage*图像=[SPImage IMAGEWITH纹理:[气球纹理对象索引:0]];
图像x=40*i;
图像y=10;
[playFieldSprite addChild:图片];
}
}
获取随机数:
#include <stdlib.h>
int r = arc4random() % 12;
#包括
int r=arc4random()%12;
使用每秒调用的NSTimer:您可以使用CADisplayLink而不是NSTimer。原因是CADisplayLink将其图形与显示器的刷新率同步 如何设置CADisplayLink:
id displayLink = [NSClassFromString(@"CADisplayLink") displayLinkWithTarget:self selector:@selector(changeBalloonTexture)];
[displayLink setFrameInterval:60]; // refresh rate is 60fps, 1=60fps, 60=1fps
[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
如何检查特定设备上是否支持CADisplayLink:
// code from cocos2d
displayLinkSupported = FALSE;
NSString *reqSysVer = @"3.1";
NSString *currSysVer = [[UIDevice currentDevice] systemVersion];
if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)
displayLinkSupported = TRUE;
为此,您需要跟踪绿色气球&随机将其中一个气球更改为红色 将所有气球精灵放在一个
NSArray
sayballoodarray
&安排一个计时器每秒运行一个方法。在该方法中,迭代气球数组
,&将所有绿色气球收集到另一个数组中,比如绿色气球数组
然后使用arch4random()
方法生成一个从0到greenballosarray
长度的随机数(索引)。使用随机数作为新创建的greenballosarray
的索引,以获取气球精灵并将其纹理更改为红色
// Sudo Code
// Add all objects to one array
NSMutableArray *balloonsArray = [[NSMutableArray alloc] initWithObjects: ..... ];
- (void) timerMethod
{
__block NSMutableArray *greenBalloonsArray = [[NSMutableArray alloc] init];
[balloonsArray enumerateObjectsUsingBlock:^(BalloonSprite *object, NSUInteger idx, BOOL *stop) {
if (object.isGreen)
[greenBalloonsArray addObject:object];
}];
int index = arc4random() % greenBalloonsArray.count;
GreenBallonArray * greenBalloon = [greenBalloonsArray objectAtIndex:index];
[greenBallon turnToRed];
}