iPhone应用程序:每秒创建一个对象

时间:2010-09-27 11:06:07

标签: iphone nstimer

我正在创建一个基本上是教程扩展的应用程序(我对应用程序开发世界很新)。教程中有一个青色的盒子在屏幕周围移动到你触摸的位置。

我所做的是将背景更改为ImageView,使其看起来像深海,我将一个ImageView放在青色UIView中,以显示潜水员的白色轮廓。

我想从这个实验/练习中得到的是触发气泡在屏幕底部的潜水员和海藻每隔几秒钟出现和消失。

我使用此Quickie link设置我的计时器,但我从NSTimer声明中收到各种错误。

这是我的代码:

NSTimer *bubbleTimer;

bubbleTimer = [NSTimer scheduledTimerWithTimeInterval: 0.5
                                     target: bubble
                                   selector: @selector(moveBubble:)
                                   userInfo: nil
                                    repeats: YES];

该行NSTimer * bubbleTimer;没有为NSTimer着色,并且错误表示它将bubbleTimer默认为int。

正如我所说,我仍然试图在这个世界找到我的脚,所以你能给予的任何帮助都将受到赞赏

编辑:

这是我的.h

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface TouchView : UIView {

IBOutlet UIView *stretchView; //This defines an object in Interface Builder called stretchView
IBOutlet UIView *bubble;
NSTimer *bubbleTimer;
}

@end

和我的.m

#import "TouchView.h"


@implementation TouchView

//First we need a method that processes each touch of the screen
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

//Begin an animation - The animation is given a name which in this case is
//Move and Stretch
[UIView beginAnimations:@"MoveAndStretch" context:nil];
//We set a duration for this animation in seconds
[UIView setAnimationDuration:1];
//Start the animation from the screen's current state
[UIView setAnimationBeginsFromCurrentState:YES];
//Any location changes between here and Commit Animations is animated.
//Firstly we need to process a simple touch which 
if([touches count] == 1) {
    //make a single touch variable
    UITouch *touch = [touches anyObject];
    //change the location of stretchview to the location of the touch
    stretchView.center = [touch locationInView:self];
}
[UIView commitAnimations];
}

- (void)moveBubble:(NSTimer *)theTimer {
CGPoint start;
start.x=480;
start.y=300;
CGPoint end;
end.x=0;
end.y=300;
bubble.center=start;
[UIView beginAnimations:@"Bubble" context:nil];
[UIView setAnimationDuration:2];
[UIView setAnimationBeginsFromCurrentState:YES];
bubble.center=end;
[UIView commitAnimations];
}

bubbleTimer = [NSTimer scheduledTimerWithTimeInterval: 0.5
                                                        target: self
                                                      selector: @selector(moveBubble:)
                                                          userInfo: nil
                                                           repeats: YES];

@end

4 个答案:

答案 0 :(得分:1)

听起来你错过了一次导入。

#import <Foundation/NSTimer.h>

答案 1 :(得分:1)

您是否在文件顶部至少包含以下标题:

#import <Foundation/Foundation.h>

并与Foundation框架链接?

相关:请参阅另一个Stack Overflow post

的有用答案

答案 2 :(得分:1)

可能是你的格式,但是你在一个方法中创建了NSTimer吗?它本身似乎浮出水面。

答案 3 :(得分:0)

由于您在实例方法之外执行实例变量 bubbleTimer 的初始化,因此您发布的代码将无法运行。当你想要启动计时器时,只需调用 scheduledTimer:方法,但是从另一个实例方法中调用(比如touchesBegan:也许?但要小心,否则你将继续产生计时器......)而不是在open中就像静态变量初始化一样。