在iOS中,当图像到达屏幕边缘时进行变换
我有10只萤火虫,我用下面的代码在屏幕上“飞翔”。 该代码还用于将萤火虫保持在屏幕上在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
- (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;**