Iphone 如何在每次调用计时器时使用不同的实例变量创建新的UIImageView
你的朋友怎么样 我想在每次调用计时器时创建一个新的实例变量,例如Iphone 如何在每次调用计时器时使用不同的实例变量创建新的UIImageView,iphone,objective-c,cocoa-touch,uiimageview,Iphone,Objective C,Cocoa Touch,Uiimageview,你的朋友怎么样 我想在每次调用计时器时创建一个新的实例变量,例如 numberofObjects += 1; i = numberofObjects; UIImageView *Object[i] = [[UIImageView alloc] initWithFrame:CGRectMake(randomx,0,36 ,36)]; UIImage *imag = [UIImage imageNamed:@"ball.png"];
numberofObjects += 1;
i = numberofObjects;
UIImageView *Object[i] = [[UIImageView alloc] initWithFrame:CGRectMake(randomx,0,36 ,36)];
UIImage *imag = [UIImage imageNamed:@"ball.png"];
[Object[i] setImage:imag];
[self.view addSubview:Object[i]];
有办法做到这一点吗
任何评论都将不胜感激。这并不难做到。我假设您只会拥有最大数量的UIImageView,因为这会增加很多开销,如果允许它永远持续下去,您可能会遇到问题。在.h文件中
@interface viewController : UIViewController {
int numberAdded;
NSTimer * timer;
UIImageView * currentImageView;
NSMutableArray * arrayOfImageViews;
}
- (void)addNewImageView;
@end
在.m文件中:
#define MaxImageViews 20 // This is changeable!
@implementation viewController
- (void)viewDidLoad; {
[super viewDidLoad];
numberAdded = 0;
arrayOfImageViews = [[NSMutableArray alloc] init];
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(addNewImageView) userInfo:nil repeats:YES];
}
- (void)addNewImageView; {
if(numberAdded >= MaxImageViews){
[timer invalidate];
timer = nil;
return;
}
int randomX = arc4random() % 320; // Gives value from 0 - 319.
int randomY = arc4random() % 480; // Gives value from 0 - 479.
UIImageView * imageView = [[UIImageView alloc] initWithFrame:CGRectMake(randomX, randomY, 36, 36)];
imageView.image = [UIImage imageNamed:@"ball.png"];
[self.view addSubview:imageView];
[arrayOfImageViews addObject:imageView];
[currentImageView release];
currentImageView = imageView;
}
- (void)dealloc; {
[currentImageView release];
[arrayOfImageViews release];
[super dealloc];
}
@end
这将跟踪阵列中的所有图像视图
arrayOfImageViews
,您可以通过调用[arrayOfImageViews objectAtIndex:i]
访问第i个图像视图。currentImageView
指针跟踪添加的最新UIImageView。希望有帮助 将图像视图的指针存储在对象中。让我猜猜,您来自JavaScript?感谢您的评论,但我正在寻找一种方法来更改为ponters名称,例如imageView1、imageView2、imageView3。。。因此,我可以将其添加到NSMutableArray,并检查与另一个imageView的冲突。你有什么想法吗?我不知道你所说的“更改为ponters名称,例如imageView1、imageView2、imageView3…”是什么意思。您的意思是要跟踪每个ImageView吗?如果是这样,我将编辑上面的代码。好的,对于e.j,我有一个NSMutableArray,它将填充UIimageView,我每隔.5秒创建一个名为imageView的指针。所以我要做的是改变指向imageView1,imageView2的指针。。。。当定时器被调用时。这就像计时器运行imageView1,然后计时器再次运行,现在它的imageView2结束了,等等。问题是,我需要为该对象获取一个新指针,以便检查碰撞。例如object1、object2、object3…@Jean Pierre:变量名和指针是两个不同的东西。如果要将每个图像视图与名称或其他唯一键相关联,请使用NSMutableDictionary。谢谢,但有没有办法做到这一点?我有一个NSMutableArray,它将使用UIimageView填充,我每隔.5秒创建一个名为imageView的指针。所以我要做的是改变指向imageView1,imageView2的指针。。。。当定时器被调用时。这就像计时器运行imageView1,然后计时器再次运行,现在它的imageView2结束了等等@Jean-Pierre:同样,这与指针无关。你说的是变量名。否:不能在运行时更改变量名。您需要做的是保留一个NSUInteger
类型的变量,该变量将索引保存到数组中。(请注意,C和Cocoa中的数组索引从0开始,而不是1。)声明一个实例变量,其中一个实例变量包含指向NSMutableArray对象的指针,另一个实例变量包含一个整数。将当前感兴趣的图像视图的索引保留在NSUInteger变量中,并使用该索引从数组中检索图像视图。