在iOS中,当图像到达屏幕边缘时进行变换

在iOS中,当图像到达屏幕边缘时进行变换,ios,objective-c,uiimageview,cgaffinetransform,Ios,Objective C,Uiimageview,Cgaffinetransform,我有10只萤火虫,我用下面的代码在屏幕上“飞翔”。 该代码还用于将萤火虫保持在屏幕上 - (void)viewDidLoad { [super viewDidLoad]; NSArray *blueArray = [NSArray array]; blueArray = [[NSArray alloc] initWithObjects: [UIImage imageNamed:@"blue1.png"], [UIImage image

我有10只萤火虫,我用下面的代码在屏幕上“飞翔”。 该代码还用于将萤火虫保持在屏幕上

- (void)viewDidLoad
{
    [super viewDidLoad];

NSArray *blueArray = [NSArray array];
blueArray = [[NSArray alloc] initWithObjects:
             [UIImage imageNamed:@"blue1.png"],
             [UIImage imageNamed:@"blue2.png"], nil];

blue.animationImages = blueArray;
blue.animationDuration = 0.20;
blue.animationRepeatCount = -1;
[blue startAnimating]; 

    bluepos =CGPointMake(2.0, 1.5);
}


-(void) someMethod {
    endingAnimationTimer = [NSTimer scheduledTimerWithTimeInterval:(0.03) target:self selector:@selector(makeFly) userInfo:nil repeats:YES];
}


-(void) makeFly {

    blue.center = CGPointMake(blue.center.x+bluepos.x, blue.center.y+bluepos.y);{
        if(blue.center.x > 480 || blue.center.x <0)
            bluepos.x = -bluepos.x;

        if(blue.center.y > 320 || blue.center.y <0)
            bluepos.y = -bluepos.y;
    }
}
英寸

 @synthesize blueIsFacingRight;


-(void) makeFly {

    blue.center = CGPointMake(blue.center.x+bluepos.x, blue.center.y+bluepos.y); {
        if(blue.center.x > 480 ) {
            if (blueIsFacingRight == YES) {
                blue.transform = CGAffineTransformMakeScale(-1, 1);
                blueIsFacingRight = NO;
            }
            bluepos.x = -bluepos.x;


        }

        if(blue.center.x <0) {
            bluepos.x = -bluepos.x;

            if (blueIsFacingRight == NO) {
                blue.transform = CGAffineTransformMakeScale(1, 1);
                blueIsFacingRight = YES;
            }
        }

        if(blue.center.y > 320 )
            bluepos.y = -bluepos.y;

        if( blue.center.y <0)
            bluepos.y = -bluepos.y;
    }
}
@IsFacingRight;
-(无效)makeFly{
blue.center=CGPointMake(blue.center.x+bluepos.x,blue.center.y+bluepos.y){
如果(蓝色中心x>480){
如果(blueIsFacingRight==是){
blue.transform=CGAffineTransformMakeScale(-1,1);
blueIsFacingRight=否;
}
bluepos.x=-bluepos.x;
}
如果(蓝色,中心x 320)
bluepos.y=-bluepos.y;

如果(blue.center.y在这两种情况下,您都将变换X值设置为-1。当其朝向右侧时,您应该像这样设置变换CGAffineTransformMakeScale(1,1)

blue.center=CGPointMake(blue.center.x+bluepos.x,blue.center.y+bluepos.y){
如果(蓝色中心x>480){
如果(blueIsFacingRight==是){
blue.transform=CGAffineTransformMakeScale(-1,1);
blueIsFacingRight=否;
}
bluepos.x=-bluepos.x;
}
如果(蓝色,中间.x
上面是我的makeFly方法,上面还有一堆其他东西,我正在反转图像,所以我在下次调用该方法时(0.03之后)撤消了更改


伙计,我觉得自己很傻

你说的对,复制粘贴让我上了那一张。但是,修复这一点并没有解决问题,图像仍然没有改变,请参见上面的编辑,UIImageView实际上是一个图像数组,所以看起来像fireflie的翅膀在拍打。它是一个数组会导致转换不起作用吗?
 @synthesize blueIsFacingRight;


-(void) makeFly {

    blue.center = CGPointMake(blue.center.x+bluepos.x, blue.center.y+bluepos.y); {
        if(blue.center.x > 480 ) {
            if (blueIsFacingRight == YES) {
                blue.transform = CGAffineTransformMakeScale(-1, 1);
                blueIsFacingRight = NO;
            }
            bluepos.x = -bluepos.x;


        }

        if(blue.center.x <0) {
            bluepos.x = -bluepos.x;

            if (blueIsFacingRight == NO) {
                blue.transform = CGAffineTransformMakeScale(1, 1);
                blueIsFacingRight = YES;
            }
        }

        if(blue.center.y > 320 )
            bluepos.y = -bluepos.y;

        if( blue.center.y <0)
            bluepos.y = -bluepos.y;
    }
}
blue.center = CGPointMake(blue.center.x+bluepos.x, blue.center.y+bluepos.y); {
if(blue.center.x > 480 ) {
    if (blueIsFacingRight == YES) {
        blue.transform = CGAffineTransformMakeScale(-1, 1);
        blueIsFacingRight = NO;
    }
    bluepos.x = -bluepos.x;


}

if(blue.center.x <0) {
    bluepos.x = -bluepos.x;

    if (blueIsFacingRight == NO) {
        blue.transform = CGAffineTransformMakeScale(1, 1);
        blueIsFacingRight = YES;
    }
}
**blue.transform =CGAffineTransformIdentity;**