Swift로 시각 프로그래밍
8971 단어 Swift
몰라서 간단한 걸 만들었어요.
그나저나 다들 스위프트에서 어떻게 했어요?
겸사겸사 말씀드리겠습니다.
스위프트는 아직 OpenGLES에 완전히 대응하지 않은 것으로 보인다.orz(이걸로 하면 원래 괜찮아)
Metal 정보가 너무 적어서 좌절했습니다.
Core Animation 전혀 몰라요. Tween 계열이에요?설치, 그래서 이것도 빼.
SpriteKit도 CA와 마찬가지로 사용하기 어려워서 수리하지 않습니다
코드 여기 있습니다.
https://github.com/SuguruSasaki/SwiftProcessing
구조
CoreGraphics에는 베지퍼스라는 반이 있기 때문에 이걸 씁니다.
아직 CALayer의 존재를 잘 모르기 때문에 UIView에서 BezierPath로 그립니다.
사용법
이번에 우리는 아래의 그림처럼 점을 그려서 이동할 것이다.
프레임 처리
Processing과 OpenFrameworks의 업데이트/draw처럼 일정한 간격으로 호출하기를 바랍니다
ViewController에서 EnterFrameBeacon 인스턴스를 만듭니다.
self._beacon = EnterFrameBeacon()
self._beacon.initialize(fps: 60.0) // FPS設定
self._beacon.addEventListener(self) // Delegate設定
EnterFrame Beacon은 initialize가 설정한 프레임 속도로 알려 줍니다.알림을 받기 위해 addeventListener로 청중을 등록합니다.
알림을 받으려면 ViewController에서 EnterFrame Delegate 프로토콜을 설정합니다.
class ViewController: UIViewController, EnterFrameDelegate{
다음은 업데이트 방법을 실시합니다.func update {
}
이렇게 하면 통지를 받을 수 있다.Canvas 만들기
드로잉 영역을 생성합니다.Canvas App 클래스를 상속하는 하위 클래스를 만듭니다.
이번엔 My Canvas.init, 업데이트, draw를 추가합니다.
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override init(frame: CGRect, clearColor: UIColor) {
super.init(frame: frame, clearColor: clearColor)
}
override update(){
}
override draw(){
}
업데이트/draw에 이 코드를 써서 테스트를 할 수 있습니다.점을 표시합니다.
우선 움직여 보고 싶어서 표시를 좀 해 보세요.
My Canvas init 내에서 Partical 을 만듭니다.Partical은 좌표만 관리합니다.
for var i = 0; i < 200; ++i {
var px: CGFloat = Math.randomBetweenNumbers(0.0, secondNum: self.frame.width)
var py: CGFloat = Math.randomBetweenNumbers(0.0, secondNum: self.frame.height)
var p: Particle = Particle(center: CGPointMake(px, py))
var vx: CGFloat = Math.randomBetweenNumbers(-5.0, secondNum: 5.0)
var vy: CGFloat = Math.randomBetweenNumbers(-5.0, secondNum: 5.0)
p.setVelocity(vx, y: vy)
self._particles.append(p)
}
드로잉에 점을 그립니다. var max = self._particles.count
for var i = 0; i < max; ++i {
var p: Particle = self._particles[i] as Particle
DrawCircle.draw(p, radius: CGFloat(3.0), strokeColor: UIColor.redColor(), fillColor: UIColor.redColor())
}
이렇게 하면 완성된다.그리고github 코드를 참고하세요.
만약 다른 좋은 방법을 아는 사람이 있다면 나에게 알려주세요!
Reference
이 문제에 관하여(Swift로 시각 프로그래밍), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mizno/items/93915e823fac0e307c7a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)