我需要获取mtype的当前值并将其传递给Mselect,以便向前推进的图像与动画中旋转的图像相同。
这是代码示例
- (void)viewDidLoad
{
//Array to hold Images
NSMutableArray *imageArray = [[NSMutableArray alloc] initWithCapacity:Mush_Count];
for (mtype = 1; mtype < Mush_Count; mtype++)
{
[imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"Mush%i.png", mtype]]];
//make button
SelectBt.imageView.animationImages = [NSArray arrayWithArray:imageArray];
SelectBt.imageView.animationDuration = 5;
[SelectBt.imageView startAnimating];
Mselect = mtype;
}
}
-(IBAction)Selection:(id)sender{
[self Placement];
}
-(void)Placement{
if (Place1Occ == NO) {
[self Place1];
}
}
-(void)Place1{
if (Place1Occ == NO) {
Place1.image =[UIImage imageNamed:[NSString stringWithFormat:@"Mush%i.png", Mselect]];
Place1Occ = YES;
}
}
动画循环很好并且图像的选择有效,但是它没有选择当前在屏幕上选择阵列上最后一个图像的图像。
有什么建议吗?
答案 0 :(得分:0)
SelectBT是UIButton的子类吗?如果是这样的(身份)发件人来自您的IBAction?
如果是这样,那么您可以通过调用sender.imageView.image
直接从SelectBT实例获取图像
顺便说一句,Objective-C约定是将ClassNames大写,但是使用lowerCase启动实例,就像这个ClassName *instanceOfClassName
一样,如果你不遵守那个约定,你可能会在这里使用它。 / p>
的更新强> 的
你可以将imageArray撞到类变量或属性吗?它已经包含了所有满载的UIImages,你可以通过调用[imageArray objectAtIndex:i]
然后,您只需跟踪用户面向哪个数字索引,或者他们点击了哪个索引并拉出相应的图像。
如果您希望我们解释更多内容,请随意发表您的全班。
答案 1 :(得分:0)
for (mtype = 1; mtype < Mush_Count; mtype++)
{
[imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"Mush%i.png", mtype]]];
}
该循环足以构建图像数组 - 在此循环完成并填充数组之前,您无需设置imageView的动画图像。
按照目前的情况,您可以在每次循环时重置动画图像,并在每次迭代时将Mselect
设置为type
:这就是为什么您总是得到Mselect
中存储的最后一个图像索引
此代码应位于for循环之后:
SelectBt.imageView.animationImages = [NSArray arrayWithArray:imageArray];
SelectBt.imageView.animationDuration = 5;
[SelectBt.imageView startAnimating];
据我所知,您无法直接获取动画的当前帧 - 您必须在启动动画时创建一个计时器,并计算帧数(通过增加Mselect
然后用它来加载当前图像