2011-05-14 4 views
0

나는 간단한 게임을 만들지 만 매 초마다 이미지를 그려야합니다. 여러 UIImageViews를 사용하려고했지만 빠르게 작동하지 않는다는 것을 알았습니다. 그렇다면 어떻게 이미지를 그릴 수 있고 업데이트 타이머가 작동하면 이미지를 지울 수 있습니까? 다음 코드를 사용하려고했지만 아무 것도 나타나지 않았습니다.UIImages를 뷰에 "그리는 방법"?

- (void) update:(NSTimer*) timer { 
    UIimage *someImage; 
    someImage = [UIImage imageNamed:@"car.png"]; 
    [someImage drawAtPoint:thePoint]; 
} 

NSPoint와 CGRect 모두 thePoint를 만들려고했으나 아무 것도 나타나지 않았습니다. 지금 무엇을해야합니까? 참고 : thePoint는 내 .h 파일에서 선언됩니다. 현재 NSPoint이며 적절히 사용되고 있다고 생각합니다.

+0

이런 상황에서 이미지보기를 사용하는 데별로 익숙하지 않지만 이미지를 하나의 imageView 인스턴스로 설정할 수 없습니까? 업데이트가 발생하면'imageView.image = nil;'을 호출하고'imageView.image = newImage; '로 새 이미지를 설정할 수 있습니다. 이미지 크기가 크지 않으면 (이미지 뷰의 크기를 강제로 변경해야 함) 이론적으로는 시간에 이미지를 설정할 수 있어야합니다. – justin

+0

애니메이션 인 경우 (주어진 프레임 속도로 여러 프레임 재생)이 작업은 네가하는 방식이 아니야. 대신에 'yourView.animationImages = animationFramesArray; yourView.animationDuration = 10; [yourView startAnimating]; ' –

+0

@mindnoise 애니메이션이 아니지만 어떻게하는지 말해 주셔서 감사합니다. 나중에 제작할 다른 앱의 애니메이션에 애니메이션을 추가하기 시작하면 매우 유용 할 것입니다. – Justin

답변

2

정말이 코드입니까? 그것은 거의 의미가 없습니다. 로컬 변수 someImage을 만들었으므로 해당 객체가 가리키고있는 객체를 만들지 않고 사용하려는 클래스에 존재하지 않는이 비 객체에 대한 메소드를 호출하려고합니다 UIImage에는 setImage:이 없음). 그것은 거의 충돌을 보장합니다. 그리고 즉시 실행되지 않으면, 메모리를 파괴하기 때문에 나중에 하나가 발생할 수 있습니다. 스택과 같은 변수는 0으로 초기화되지 않습니다 (nil). 그것이 ivar이었고 임의의 주소로 메시지를 보내려고하면 나쁜 생각입니다. 왜 CGRect을이라는 이름으로 심지어 라고하는 방법으로 전달하려고 시도하겠습니까? 마지막으로,이 부분이 그려지기를 기대하십니까? 드로잉 컨텍스트 (일반적으로 뷰에 의해 제공되며 제목에는 언급되었지만 질문은 필요하지 않음)가 필요합니다.

그리기 안내서의 "Images" 장을 살펴보십시오.

+0

음 ... someImage는 내가 이미지를 사용한다는 것을 의미합니다. 실제로는 UIImage가 아닙니다. 제 실제 코드에서는 [UIImage imageNamed : @ "car.png"] 대신 사용했습니다. – Justin

+0

그렇다면 질문에 "다음 코드를 사용하려고했습니다."라는 이유가 무엇입니까? _real_ 코드를 게시하십시오. 당신이 실제로하고있는 것을 우리에게 말하지 않으면 어떻게 당신을 도울 수 있습니까? –

+0

나는 그것을 분명하게 생각했다. 내가 한 일을 보여주기 위해 코드를 편집 할 것입니다. 그 시점을 가져 주셔서 감사합니다. – Justin

1

NSPoint은 Mac 용이며 CGRect은 사각형이며 의미가 없습니다. 당신이 찾고있는 것은 CGPoint입니다.

-(void)update:(NSTimer*) timer { 
    CGPoint thePoint = CGPointMake(0, 0); 
    UIImage *someImage = [UIImage imageNamed:@"car.png"]; 
    [someImage drawAtPoint:thePoint]; 
} 
+0

이것은 좋은 포인트 ** 이지만 여전히 드로잉 컨텍스트 여야합니다. –

+0

네, 그렇게 미안해하지 않았어. 나는 너의 것 이외에이 점 (기침) *을하려고 노력했다. –

관련 문제