0

在我的应用程序中,我有一个动画,当用户点击一个按钮时播放。在按钮点击的 IBAction 方法中,我让它创建一个 NSMutable 数组,将图像加载到数组中,然后循环浏览图像。

这导致按钮点击和动画播放之间存在相当大的延迟,但之后的每次点击都很好,因为数组已经用图像创建了。

我尝试将数组创建和图像加载放在 vieDidLoad 方法中,但由于某种原因,IBAction 方法(循环图像的调用所在)无法访问数组。我将如何使阵列可供它使用?

- (IBAction)tap {

NSMutableArray *anim = [[NSMutableArray alloc]initWithObjects:[UIImage      imageNamed:@"0001.png"], ...(x30)... nil];

type.animationImages  = anim;
    type.animationDuration = 1.0;
    type.animationRepeatCount = 1;

    [type startAnimating];

}
4

3 回答 3

0

定义NSMutableArray *anim到您的UIViewController .h文件中。它将使其可供全球访问到您的.m文件的任何位置。

- (void) viewDidLoad
{
    anim = [[NSMutableArray alloc]initWithObjects:[UIImage imageNamed:@"0001.png"], ...(x30)... nil];
}

- (IBAction)tap 
{

    type.animationImages  = anim;
    type.animationDuration = 1.0;
    type.animationRepeatCount = 1;

    [type startAnimating];

}
于 2012-08-28T06:18:54.377 回答
0

在 .h 文件中定义 NSMutableArray *anim 即类成员变量

在 viewDidLoad 方法中定义如下:

anim = [[NSMutableArray alloc]initWithObjects:[UIImage      imageNamed:@"0001.png"], ...(x30)... nil];

在按钮事件中这样使用:

 - (IBAction)tap 
{
  type.animationImages  = anim;
  type.animationDuration = 1.0;
  type.animationRepeatCount = 1;
  [type startAnimating];
}
于 2012-08-28T06:18:08.340 回答
0

试试这个简单的代码可能对你有帮助。第一次点击时数组分配一次。

if(!anim)
{
NSMutableArray *anim = [[NSMutableArray alloc]initWithObjects:[UIImage      imageNamed:@"0001.png"], ...(x30)... nil];

   NSLog(@"array allocate");
}else
    {
       NSLog(@"array already allocated");
     }
于 2012-08-28T06:18:12.783 回答