рдЦреЗрд▓ St.Val рдХреЗ рд▓рд┐рдП рддреАрд░ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдореЗрдВ рд╡рдХреНрд░ рдХрд╛ рдЕрдиреБрдорд╛рди

рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдмрдирд╛рдПрдВред рдпрд╣ рдирд┐рдпрдВрддреНрд░рдг рд╣рд╛рд░реНрдмрд░ рдорд╛рд╕реНрдЯрд░ рдФрд░ рдлреНрд▓рд╛рдЗрдЯрдХрдВрдЯреНрд░реЛрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЦрд┐рд▓рд╛рдбрд╝реА рдПрдХ рд░реЗрдЦрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдВрдЧрд▓реА рдЦреАрдВрдЪрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдФрд░ рд╡рд┐рдорд╛рди рдЪрд▓рддреЗ рд╣реИрдВред рдореЗрд░реЗ рд╕реЗрдВрдЯрд╡реИрд▓ рдЧреЗрдо рдХреЗ рд▓рд┐рдП, рдЗрд╕реА рддрд░рд╣ рдХреЗ рдореИрдХреЗрдирд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдореИрдВрдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдФрд░ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ - рдиреАрдЪреЗ рдкрдврд╝реЗрдВред



рдЦреЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред рд╕реЗрдВрдЯрд╡реИрд▓ рдкрд░, рдореБрдЦреНрдп рд▓рдХреНрд╖реНрдп рддреАрд░ рджреНрд╡рд╛рд░рд╛ рд░рдВрдЧ рд╕реЗ рджрд┐рд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдХрд╛рд░реНрдп: рддреАрд░ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рддрд╛рдХрд┐ рдпрд╣ рдЙрдбрд╝рд╛рди рдореЗрдВ рджрд┐рд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╡реАрдбрд┐рдпреЛ рдЧреЗрдо рдореИрдХреЗрдирд┐рдХреНрд╕ рдХреЗ рдиреАрдЪреЗ, iOS рдХреЗ рд▓рд┐рдП Cocos2D 2.1 рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧреЗрдо рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред



рдореБрдЦреНрдп рдХрд╛рд░реНрдп


рдкреНрд░рдмрдВрдзрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рддреАрди рдХрд╛рд░реНрдп рд╣рд▓ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:
  1. рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрдврд╝реЗрдВ
  2. рдЙрдиреНрд╣реЗрдВ рдЪрд┐рдХрдирд╛ рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░реЗрдВ
  3. рдЙрди рдкрд░ рддреАрд░ рдЪрд▓рд╛рдпрд╛


рд╕рд╛рде рд╣реА, рдореИрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЯреНрд░реИрдЬреЗрдЯрд░реА рдореЗрдВ рдЫреЛрд░реЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕реЗ рдореБрдЭреЗ рдЦреЗрд▓ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдХрдЯреМрддреА рдХреЗ рддрд╣рдд, рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдФрд░ рдПрдХ рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХред



рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: github.com/AndreyZarembo/TouchInput

рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреИрд╕реЗ рдкрдврд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ


рдлрд┐рдВрдЧрд░ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрдврд╝рдирд╛ рдПрдХ рд╕рд░рд▓ рдХрд╛рд░реНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ Cocos2D рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЯрдЪ рдИрд╡реЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдкреНрд░рдХрд╛рд░ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╕реНрддреБ CCTouchOneByOneDelegate рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ рдФрд░ рдЯрдЪ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреА рд╣реИ:
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches: YES]; 

CCTouchOneByOneDelegate рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
 //    - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event //     - (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event //   - (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event //  -     -   - (void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event 


рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЙрдВрдЧрд▓реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдкрд╣рд▓реА рдЯрдЪ рдореЗрдВ рдХрд░рдВрдЯрдЯрдЪ рдЪрд░ рдореЗрдВ рдпреВрдЖрдИрдЯрдЪ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдпрджрд┐ рдпрд╣ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдВрджреЛрд▓рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

рдЬрдм рдЙрдВрдЧрд▓реА рдЬрд╛рд░реА рдХреА рдЬрд╛рддреА рд╣реИ, рддреЛ рд╣рдо рд╡рд░реНрддрдорд╛рдирдЯрдЪ рдЪрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ ccTouchMoved рдЧрддрд┐ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ рд╣рдо рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕ рд╡рд╕реНрддреБ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХреА рдЬрд╛ рд░рд╣реА рд╣реИред рдпрджрд┐ рд╣рд╛рдБ - рдЕрдВрдХ рджрд░реНрдЬ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рдЧрдбреНрдврд╛ 1

рдЬрдм рддрдХ рдЖрдк рдЧреЗрдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╢рд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗрдВрджреНрд░ рдкреИрдирд▓ рдкреЙрдк рдЕрдк рд╣реЛрддрд╛ рд╣реИ, рддрдм рддрдХ рдпрд╣ рд╕рдм рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЗрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ, ccTouchCancelled рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ccTouchMoved рдШрдЯрдирд╛ рдЕрдм рдирд╣реАрдВ рдЖ рд░рд╣реА рд╣реИред рдпрд╣ рдЙрдВрдЧрд▓реА рдкрд░ рдЪрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдЧрд░ _currentTouch.phase == UITouchPhaseCancelled рд╣реИ , рддреЛ рдЙрдВрдЧрд▓реА рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛:
 - (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event { if (currentTouch == nil || currentTouch.phase == UITouchPhaseCancelled) { currentTouch = touch; } return YES; } - (void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event { if (touch == currentTouch) { // Save point } } - (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event { if (touch == currentTouch) { // End trajectory } } - (void)ccTouchCancelled:(UITouch *)touch withEvent:(UIEvent *)event { if (touch == currentTouch) { // End trajectory } } 


рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ


рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░реНрдб рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд▓рд╛рдЗрди рдЪрд┐рдХрдиреА рджрд┐рдЦреЗ рдФрд░ рд╕рд╛рде-рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЖрдЧреЗ рдмрдврд╝реЗрдВред

рд╡рдХреНрд░ рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рджреВрд░реА рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдХрдо рд╕реЗ рдХрдо 20px рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдЙрдВрдЧрд▓реА рд╕реЗ рдбреЗрдврд╝ рдЧреБрдирд╛ рдЫреЛрдЯрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИред 20px рдХреА рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рджреВрд░реА рдХреЗ рд╕рд╛рде, рд╕рдВрд╕рд╛рдзрд┐рдд рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 50-70% рддрдХ рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИ, рд╕реАрдорд╛ рдореЗрдВ рдпрд╣ 95% рд╣реИ рдЬрдм рдЙрдВрдЧрд▓реА рдкрд┐рдХреНрд╕реЗрд▓ рдХреЛ рд╕реНрдХреНрд░реАрди рдкрд░ рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рд▓реЗ рдЬрд╛рддреА рд╣реИред

рдЕрдВрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдПрдХ рд╡рдХреНрд░ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдХрд╛рдардореБрд▓реНрд▓рд╛-рд░реЛрдорд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджрд┐рдП рдЧрдП 4 рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЪрд░рдгреЛрдВ рдХреЛ рдЪрд┐рдХрдирд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред



рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рд╕реЗ рд╡рдХреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реАрдорд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдЬреЛрдбрд╝реЗрдВ: рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдЦрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдПрди рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрди -1 рд╕реЗрдЧрдореЗрдВрдЯ рдорд┐рд▓рддрд╛ рд╣реИред



рдкреЛрд╕реНрдЯ рд╕реНрд╡реИрдЪреНрдЫрд┐рдХ рдирд┐рдХрд▓рд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рдХреНрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдиреАрдЪреЗ рдЗрд╕рдХреЗ рдЦрдВрдбреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реИред

рдкрд┐рдЯрдиреЗ рдХреА рдХреНрд░рд┐рдпрд╛ реи

рд╡рд░реНрдгрд┐рдд рд╡рдХреНрд░ рдореЗрдВ, рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдЖрдВрджреЛрд▓рди рдЕрд╕рдорд╛рди рд╣реЛрдЧрд╛ред рдЖрдВрджреЛрд▓рди рдХреЛ рд╕реБрдЪрд╛рд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЛ 10px рдХреЗ рд╕реАрдзреЗ рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕ рдЖрдХрд╛рд░ рдХреЛ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛:
  1. рдпрд╣ рдПрдХ рдЧреЛрд▓ рд╕рдВрдЦреНрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХрд┐ рд╡рдХреНрд░ рдкрд░ рджрд┐рдП рдЧрдП рд╕рд╛рдорд╛рдиреНрдп рд╕рдордиреНрд╡рдп рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреЗ рдЦрдВрдбреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рд╡рдХреНрд░ рдХреЗ рд╕рд╛рде рдпрд╛рддреНрд░рд╛ рдХреА рдЧрдИ рджреВрд░реА);
  2. рдпрд╣ рдХрд╛рдлреА рдЫреЛрдЯрд╛ рд╣реИ рддрд╛рдХрд┐ рдХрджрдо рдЦреБрдж рдХреЛ рдорд╣рд╕реВрд╕ рди рдХрд░реЗрдВ, рдЬрдмрдХрд┐ рд╡рд┐рднрд╛рдЬрди рдХреЗ рдЕрдВрдХ рдХреЛ рдкрд░рд┐рдорд╛рдг рдХреЗ рдХреНрд░рдо рд╕реЗ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдЦрдВрдбреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдиреЗ рдХрд╛ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдЪрдХреНрд░ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд▓рд┐рдП, рдкреЙрдЗрдВрдЯреНрд╕ рдХреЛ рдРрд╕реЗ рдЪрд░рдг рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ 1px рдХреА рджреВрд░реА рдХреЛ рдХрд╡рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдмрд┐рдВрджреБ рдХреА рддреБрд▓рдирд╛ рдЕрдВрддрд┐рдо рд╕рд╣реЗрдЬреЗ рдЧрдП рд╕реНрдкрд▓рд╛рдЗрди рдкреЙрдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХреА рдЬрд╛рддреА рд╣реИред рдпрджрд┐ рджреВрд░реА 10px рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рддреЛ рдпрд╣ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рдПрдХ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдирдпрд╛ рдмрд┐рдВрджреБ рд╕реНрдкрд▓рд╛рдЗрди рдРрд░реЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП, рдпрд╣ рдСрдкрд░реЗрд╢рди рдХреЗрд╡рд▓ рдирдП рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рд╣рдореЗрдВ рдРрд╕реЗ рдмрд┐рдВрджреБ рдорд┐рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ 10px рдХреА рджреВрд░реА рдкрд░ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрдВрдЧрд▓реА рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЛ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред

рдЦреЗрд▓ рдореЗрдВ, рдЖрдк рдПрдХ рдЕрдВрддрд╣реАрди рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рдЕрдВрдд рдХреЗ рд▓рд┐рдП рд╢рд░реНрдд рдЬреЛрдбрд╝реА рдЧрдИ рдереАред

рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рд╣рд┐рд▓рдирд╛


рдЦреЗрд▓ рдореЗрдВ, рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЛ рдЪрд▓рддреА рдмрд┐рдВрджреБрдУрдВ ("рдкрдЯрд░рд┐рдпреЛрдВ") рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡реЗ рдкреНрд░рддреНрдпреЗрдХ 20px рдкрд░ рд╡рдХреНрд░ рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдкрде рдХреЗ рдЕрдВрдд рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВред рдЧрддрд┐ рдкреНрд░рднрд╛рд╡ рдмрдирд╛рдиреЗ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрдХ 10 рдкрд┐рдХреНрд╕реЗрд▓ рдХреЗ рджреЛ рдЦрдВрдбреЛрдВ рдореЗрдВ 0 рд╕реЗ 20 рддрдХ рдмрдврд╝рддреЗ рд╣реИрдВ, рдлрд┐рд░ рд╕реЗ 0. рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВред рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЖрдВрджреЛрд▓рди рдХреЗ рдХрд╛рд░рдг, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╢реБрд░реБрдЖрдд рд╕реЗ рдЕрдВрдд рддрдХ рд▓рдЧрд╛рддрд╛рд░ рдЪрд▓рддреЗ рд╣реИрдВред

рдпрджрд┐ рд╡рдХреНрд░ рдореЗрдВ N + 1 рдЕрдВрдХ рд╣реИрдВ, рддреЛ N рд╕реЗрдЧрдореЗрдВрдЯ рдЬрд┐рд╕рдореЗрдВ рдЯреНрд░реИрдХ рдЪрд▓рддреЗ рд╣реИрдВ, рдХреНрд░рдорд╢рдГ, рдЖрдкрдХреЛ N / 2 рдЯреНрд░реИрдХ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдПрдХ рдСрдлрд╕реЗрдЯ рдЯреА рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, [0.2], рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддреНрдпреЗрдХ рдкрдЯрд░рд┐рдпреЛрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

T рд╕реЗ 0 рд╕реЗ 1 рддрдХ, рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ
 Pt = Pt0*t+(1-t)*Pt1 

рдЯреА рдореЗрдВ 1 рд╕реЗ 2 рддрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ
 Pt = Pt1*(t-1)+(2-t)*Pt2 




рдирддреАрдЬрддрди, рд╕рднреА рдмрд┐рдВрджреБ рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВред

рддреАрд░ рд▓реЙрдиреНрдЪ


рдмреВрдо рд▓реЙрдиреНрдЪ рдХреЛрдХреЛрд╕ 2 рдбреА рд╕реЗ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдирд┐рдореНрди рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:
  1. рдмреВрдо рдХреА рд╢реБрд░реБрдЖрддреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛
  2. рдЕрдиреБрдХреНрд░рдорд┐рдХ рдЖрдВрджреЛрд▓рди рдФрд░ рд╡рдХреНрд░ рдХреЗ рдЦрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рддреАрд░ рдХрд╛ рд░реЛрдЯреЗрд╢рди
  3. рддреАрд░ рдЫреБрдкрд╛ рд░рд╣рд╛ рд╣реИ


рдЦреЗрд▓ рдореЗрдВ рдЗрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рд╛рд░ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИред

рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдФрд░ рдЙрдирдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рднреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ NSMutableArray рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП CCSequence рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

CCCallBlock рдХреЛ рд╢реБрд░реБрдЖрддреА рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдпреЗ рд╡рдХреНрд░ рдХреЗ рдкрд╣рд▓реЗ рдмрд┐рдВрджреБ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣реИрдВред рдпрд╣рд╛рдВ, рддреАрд░ рдкреВрд░реНрдг рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдкрд░ рд╕реЗрдЯ рд╣реИред
 CCCallBlock *setInitialPosition = [CCCallBlock actionWithBlock:^{ _arrow.position = pointVal.CGPointValue; _arrow.opacity = 255; }]; [moves addObject: setInitialPosition]; 

рдлрд┐рд░ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЗ рд╕рднреА рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд╣реА рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЗ рд▓рд┐рдП, рдкрд┐рдЫрд▓реЗ рдмрд┐рдВрджреБ рдХреЛ рдмрдЪрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреАрд░ рдХрд╛ рд░реЛрдЯреЗрд╢рди рдЪрд╛рдк рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрддрдорд╛рди рдФрд░ рдкрд┐рдЫрд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдЕрдВрддрд░ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИред

рдкрд┐рдЯрдиреЗ рдХреА рдЕрд╡рд╕реНрдерд╛ рей

рд╡рдХреНрд░ рдХреЗ рддрддреНрд╡ рд▓рдЧрднрдЧ 10 рдкрд┐рдХреНрд╕реЗрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП, рддреАрд░ рдХреА рдПрдХ рд╕рдорд╛рди рдЧрддрд┐ рдХреЗ рд▓рд┐рдП, рдЦрдВрдб рдХреА рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдФрд░ рддреАрд░ рдХреА рдЧрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреЗ рд▓рд┐рдП рдЖрдВрджреЛрд▓рди рдХрд╛ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
 CGPoint point = pointVal.CGPointValue; CGPoint prevPoint = prevPointVal.CGPointValue; CGPoint diff = CGPointMake(point.x-prevPoint.x, point.y-prevPoint.y); CGFloat distance = hypotf(diff.x,diff.y); CGFloat duration = distance / arrowSpeed; lastDirectionVector = CGPointMake(diff.x/distance, diff.y/distance); CGFloat angle = -atan2f(diff.y,diff.x)*180./M_PI; CCMoveTo *moveArrow = [CCMoveTo actionWithDuration: duration position: point]; CCRotateTo *rotateArrow = [CCRotateTo actionWithDuration: duration angle: angle]; CCSpawn *moveAndRotate = [CCSpawn actionWithArray: @[ moveArrow, rotateArrow ]]; [moves addObject: moveAndRotate]; 


рдЙрдбрд╝рд╛рди рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддреАрд░ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдЙрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, lastDirectionVector рдЪрд░ рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд╡реЗрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрддрд┐рдо рдЦрдВрдб рдХреА рджрд┐рд╢рд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИред рдЫрд┐рдкрдиреЗ рдХреЗ рджреМрд░рд╛рди рддреАрд░ рдЫреБрдкрд╛ рд╣реЛрддрд╛ рд╣реИ , рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╡рд╣ рд╕реАрдзреА рд░реЗрдЦрд╛ рдореЗрдВ рдЙрдбрд╝рддрд╛ рд╣реИред рджрд┐рд╢рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рджрд┐рд╢рд╛ рд╡реЗрдХреНрдЯрд░ рдХреЛ рддреАрд░ рдХреА рдЧрддрд┐ рдФрд░ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд╕реЗ рдЧреБрдгрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
 CCFadeTo *hideArrow = [CCFadeTo actionWithDuration: hideEffectDuration opacity:0]; CCMoveBy *moveArrow = [CCMoveBy actionWithDuration: hideEffectDuration position: CGPointMake(lastDirectionVector.x*arrowSpeed*hideEffectDuration, lastDirectionVector.y*arrowSpeed*hideEffectDuration)]; CCSpawn *moveAndHide = [CCSpawn actionWithArray: @[ moveArrow, hideArrow ]]; [moves addObject: moveAndHide]; 

рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рддреАрд░ рдЙрдбрд╝рд╛рди рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИред
 [_arrow runAction: [CCSequence actionWithArray: moves]]; 


рд▓реВрдк рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛


рдЦреЗрд▓ рдХреЗ рд╕реНрддрд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ, рджрд┐рд▓реЛрдВ рдХреЛ рддреАрд░ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рджрд┐рд▓реЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдЬреЛрдбрд╝реА рд▓реВрдк рджреНрд╡рд╛рд░рд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ (0:55 рд╕реЗ рд╡реАрдбрд┐рдпреЛ рджреЗрдЦреЗрдВ)ред рдЗрд╕ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЗ рдЪреМрд░рд╛рд╣реЗ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕реЗрдЧрдореЗрдВрдЯ рдХрд╛ рдПрдХ рд╕реЗрдЧрдореЗрдВрдЯ рдкрд┐рдЫрд▓реЗ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕реЗрдЧрдореЗрдВрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЪреМрд░рд╛рд╣реЗ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг "рдЯреНрд░рд╛рдЗрдПрдВрдЧрд▓ рдХреЗ рдУрд░рд┐рдПрдВрдЯреЗрдб рдПрд░рд┐рдпрд╛" рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЪреМрд░рд╛рд╣рд╛ рдмрд┐рдВрджреБ рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдВрддрд░ рдЦрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЪрдХреНрд░ рд╕реЗ рдЬрд╛рдиреА рдЬрд╛рддреА рд╣реИред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдпрд╣рд╛рдБ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
e-maxx.ru/algo/segments_intersection_checking

рдЦрд╝рддрд░рд╛ рек

рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд▓рдВрдмреА рд╡рдХреНрд░ рдкрд░ рдпрд╣ рдзреАрдорд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЪреЗрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рддрд╛рдХрд┐ рдкрд╛рдВрдЪ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЦрдВрдб рдХреА рдЬрд╛рдВрдЪ рди рд╣реЛ, рд▓реЗрдХрд┐рди рдПрдХ рдмрдбрд╝рд╛ рдПрдХред рдирдВрдмрд░ рдкрд╛рдВрдЪ рдЬрд╛рджреВ рд╣реИ рдФрд░ рдЕрдиреБрднрд╡рдЬрдиреНрдп рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИред рдкрд╛рдВрдЪ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреНрд▓реЙрдХ рдХрд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдЪрд╛рд░ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрд╛рдВрдЪрд╡реЗрдВ рдХреЛ рдЕрдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдЕрдЧрд▓рд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рднреА рд╣реЛрдЧрд╛ред рдирд┐рд░реНрдзрд╛рд░рдг рдХреА рд╕рдЯреАрдХрддрд╛ рдХрдо рд╣реИ, рд▓реЗрдХрд┐рди рдиреБрдХрд╕рд╛рди рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИрдВред рдЖрдк рдмрдбрд╝реЗ рдЦрдВрдбреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЫреЛрдЯреЗ рдЦрдВрдбреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдХреЗ рд╕рдЯреАрдХрддрд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред



рдкрд╛рдП рдЧрдП рд╕рднреА рд▓реВрдкреЛрдВ рдХреЛ рд░рд┐рдВрдЧ рдХреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдФрд░ рдЕрдВрддрд┐рдо рдЦрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░рдгреА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрдирд╕реЗ, рдмрд╣реБрднреБрдЬ UIBezierPath рдХреЗ рдЕрдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗ , рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдирд┐рдпрдорд┐рдд рд╕рд╛рдзрди рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдмрд┐рдВрджреБ рдЗрд╕рдореЗрдВ рдЖрддрд╛ рд╣реИред

 [path containsPoint: position] 


рд╡рд╣ рд╕рдм рд╣реИ!

рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб рдпрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдз рд╣реИ: github.com/AndreyZarembo/TouchInput

ps рдкреЛрд╕реНрдЯ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдФрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

Source: https://habr.com/ru/post/In219333/


All Articles