0

こんにちは、タイトルはそれを要約しています。加速度計を使用していますが、画面から消え続けています.15歳で、端で止めようとして多くの問題を抱えています.ここに私のView Controller.mファイルがありますコード。

    #import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

@synthesize person, delta;

- (void)viewDidLoad
{
    UIAccelerometer *accel =[UIAccelerometer sharedAccelerometer];
    accel.delegate = self;
    accel.updateInterval = 1.0f / 60.0f;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

}
-(void)accelerometer:(UIAccelerometer *)accelerometer
       didAccelerate:(UIAcceleration *)acceleration{
    NSLog(@"x : %g", acceleration.x);
    NSLog(@"y : %g", acceleration.y);
    NSLog(@"z : %g", acceleration.z);

    delta.x = acceleration.y *50;
    //  delta.x = acceleration.x *8;


    person.center = CGPointMake(person.center.x + delta.x,person.center.y + delta.y );
     }


- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
4

1 に答える 1

0

更新後person.center、ビューのフレームに合わせてキャップする必要があります。そうしないと、画面から外れます。

手始めに、人がビューの左端から外れないようにする方法を次に示します。

person.center = CGPointMake(person.center.x + delta.x,person.center.y + delta.y );
// add this
CGFloat leftOfWorld = 0.0f;
CGFloat minCenterX = leftOfWorld + (person.bounds.size.width / 2.0f);
person.center = CGPointMake(MAX(minCenterX, person.center.x), person.center.y);

center.x左端から (幅 / 2) の位置にいるとき、人物は画面の左側にいます。これが私たちの最低限です。次に、最小値の間の大きい方の値を取得し、この最小値を下回っcenter.xた場合は変更します。center.x

おそらく、画面の他の端にも同様のロジックが必要になるでしょう。self.view.widthと を使用して、画面の右端と下端を計算する必要がありますself.view.height

于 2013-04-12T09:47:44.377 に答える