2

私はいくつかの簡単なアニメーションを試しており、基本的な弾むボールのチュートリアルに従っています。

画面全体ではなく、独自の座標セットを使用してボールが跳ねる場所を制限するにはどうすればよいですか? チュートリアルから使用しているコードは、画面全体からランダムに座標を選択します。その座標を設定して、画面中央の小さな正方形でのみバウンスし、外に出ないようにしたいと思いますそれらの境界の。

.m

 int ballx, bally;
 ///////

 ballx = arc4random() % 320;   

 bally = arc4random() % 480; 

 //////////


-(void)movetheball { 
    [UIView beginAnimations: @"MovingTheBallAround" context: nil];   

    [UIView setAnimationDelegate: self];
    [UIView setAnimationDuration: 1.0];
    [UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
    myball.frame =  CGRectMake(ballx, bally,myball.frame.size.width,myball.frame.size.height);  
    [UIView commitAnimations];   

}
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(SEL)aSelector {  

    if (finished) {  

        // set new coordinate for ballx and bally  

        ballx = arc4random() % 320; 

        bally = arc4random() % 480;   



        [self movetheball];  

    }  

私はSOを見てきましたが、以下を除いて似たようなものは見つかりませんでした:

ballx.center = CGPointMake(320/2, [self randNumBetween:-50:-100]); 

私はあまり成功せずに適応しようとしました。私はプログラミングの経験が豊富ではないので、そのコードでベースから外れているかどうかはわかりません

4

2 に答える 2

3
ballx = arc4random() % 320; 

bally = arc4random() % 480;

お気づきのとおり、これらはボールの新しい座標を設定する行であり、これら 2 つの変数は単なる数値です。それらには と呼ばれるコンポーネントがなくcenter、 も含まれていないCGPointため、提案された変更で正しい方向に進んでいますが、自分にとっては複雑になりすぎています。

あなたが理解できないかもしれない部分は%記号です。これが「モジュラス」演算子です。簡単に言えば、左側の数値が右側の数値よりも小さくなるように制限します。

320480がたまたま画面全体の幅と高さであることに注意してください。また、その幅と高さを使用して、モジュロ演算の結果をボールの位置を表す変数に割り当てていることに注意してください。

うまくいけば、それは十分なヒントです。

于 2012-07-06T19:19:42.213 に答える
0

基本的に、次の部分を変更してロジックを作成し、必要なビューウィンドウに境界を設定する必要があります。

ballx = arc4random() % 320;   
bally = arc4random() % 480; 

または、特定のサイズの UIView を作成し、 [Self.view addsubview:constrainedView ] で好きな場所に UIViewController に配置してから、そのビューにボールを追加できます。ただし、arc4random() % x; を変更する必要があります。x は UIView の幅または高さです。

于 2012-07-06T19:12:54.420 に答える