рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЛрдиреЛрдУрдо: рдЯрдЪ рд╕реНрдХреНрд░реАрди рд╕рдкреЛрд░реНрдЯ

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


рд╕реНрдкрд░реНрд╢ рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд░реЗрдВ


рд╡рд┐рдВрдбреЛрдЬ 8 рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЪрд▓ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЯреИрдмрд▓реЗрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдХреАрдмреЛрд░реНрдб рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░рд╛ рдЦреЗрд▓ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ platformer рд╣реИ, рдЦреЗрд▓ рдореЗрдВ рдЪрд░рд┐рддреНрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЧреЗрдордкреИрдб рдФрд░ рдХреАрдмреЛрд░реНрдб рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдмрд┐рдирд╛ рдХреАрдмреЛрд░реНрдб рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЯрдЪ рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рде, рдХреЛрдб рдореЗрдВ рдРрдб-рдСрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЗ рд▓рд┐рдП рдореЛрдиреЛрдореЗрдЧ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЖрдкрдХреЛ Xna.Framework.Input.Touch. рд╕реЗ TouchPanel рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░реАрди рд╕реЗрдВрд╕рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ Xna.Framework.Input.Touch. рдЗрд╢рд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рд╕рдВрдпреБрдХреНрдд рдмрд╛рддрдЪреАрддред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╕реНрдХреНрд░реАрди рдкрд░ рдПрдХ рдХреНрд▓рд┐рдХ рд╣реИ, рдпрд╣ GetState() рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рдЙрди рдмрд┐рдВрджреБрдУрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдкрд░реНрд╢ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  foreach (TouchLocation location in TouchPanel.GetState()) { switch (location.State) { case TouchLocationState.Moved: // location.Position.X; // location.Position.Y; // location.Pressure // location.Id break; case TouchLocationState.Pressed: break; case TouchLocationState.Released: break; case TouchLocationState.Invalid: break; } } 


рд▓реМрдЯреА TouchLocation рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдкреНрд░рдХрд╛рд░, рд╕реНрдкрд░реНрд╢ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░ рдбреЗрдЯрд╛ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рдХреА рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ (рдПрдХ рд╕рд╛рде рдкрд╛рдВрдЪ рддрдХ рдЕрдВрдХ рдорд╛рдирдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ) рдФрд░ рджрдмрд╛рд╡ред

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

рдХреИрд╕рд▓рдПрдХреНрд╕ рдореЗрдВ рд╣реА, рдХрдВрдЯреНрд░реЛрд▓ рдЗрд╡реЗрдВрдЯ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореБрдЦреНрдп рдореЗрдиреВ рдкреНрд░рддреНрдпреЗрдХ Update() Draw (рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ Update() рдореЗрдВ рдЗрдирдкреБрдЯрд╕реНрдЯреЗрдЯ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдШрдЯрдирд╛рдУрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, InputState рд╡рд░реНрдЧ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдХреА рдкрд┐рдЫрд▓реА рд╕реНрдерд┐рддрд┐ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреАрдмреЛрд░реНрдб рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рд╕реАрдзрд╛ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдорд╛рдирдХ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рд╣реИ рдХрд░реНрд╕рд░ рдХреБрдВрдЬреА рдФрд░ рдЬрдВрдк рдмрдЯрди рдХреА рдЫрд╡рд┐рдпрд╛рдВ рдмрдирд╛рдирд╛ред Paint.NET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдкрд╛рд░рджрд░реНрд╢рд┐рддрд╛ рдХреЗ рд╕рд╛рде рджреЛ PNG рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдИ рдЧрдИрдВ:



рдЗрд╕рдХреЗ рдмрд╛рдж, рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ Assets/GameContent рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╣рдореЗрдВ XNB рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдореЛрдиреЛрдУрдо рдореЗрдВ рд╕рд╛рдордЧреНрд░реА рд╕рдмрд╕рд┐рд╕реНрдЯрдо PNG рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реАрдзреЗ рдкрдврд╝ рд╕рдХрддрд╛ рд╣реИред


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

рд╣рдо LoadContent() рд╡рд┐рдзрд┐ рдореЗрдВ рдмрдирд╛рд╡рдЯ рдлрд╝рд╛рдЗрд▓ рд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ:

 arrowkeys_texture = Content.Load<Texture2D>(@"transparent_arrow_keys"); 


рдФрд░ Draw() рд╡рд┐рдзрд┐ рдореЗрдВ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ

  SpriteBatch.Begin(); SpriteBatch.Draw(arrowkeys_texture, drawPos, new Color(0, 0, 0)); SpriteBatch.End(); 



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


рд▓реЗрдХрд┐рди рдЕрднреА рдХреЗ рд▓рд┐рдП, рдпреЗ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░ рдЫрд╡рд┐рдпрд╛рдВ рд╣реИрдВ рдФрд░ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреНрд▓рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ - рдмрд╕ рдХреНрд▓рд┐рдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕ рд╕рдордиреНрд╡рдп рдХреЛ TouchLocationState.Moved рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП TouchLocationState.Moved

рдореИрдВ InputState рд╡рд░реНрдЧ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреАрдмреЛрд░реНрдб рдФрд░ рдЧреЗрдордкреИрдб рд╕реЗ рд╡рд░реНрддрдорд╛рди рдШрдЯрдирд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рд░рдЦрдирд╛ InputState ред

рд╡рд┐рд╢реЗрд╖ AddTouchKey(Keys key, Rectangle rect) рд╡рд┐рдзрд┐ рдореЗрдВ AddTouchKey(Keys key, Rectangle rect) рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рд╕рдордиреНрд╡рдп рдХреЛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдХреАрдмреЛрд░реНрдб UpdateTouchKeys() рд╕реНрдерд┐рддрд┐ рдХреЛ UpdateTouchKeys() рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, UpdateTouchKeys() рд╡рд┐рдзрд┐ рднреА рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛

  internal bool UpdateTouchPos(Dictionary<Keys, bool> key_states ) { bool touched = false; foreach (Keys key in _touchKeys.Keys) key_states.Add(key,false); foreach (TouchLocation location in TouchPanel.GetState()) { touched = true; foreach (var k in _touchKeys.Keys) { if (location.State == TouchLocationState.Moved) { if (_touchKeys[k].Contains((int)location.Position.X, (int)location.Position.Y)) { key_states[k] = true; } } } } return touched; } 



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

  public bool IsKeyDown(Keys key) { if (touchKeys.ContainsKey(key) && isTouched) return touchKeys[key]; else return orig_key_state.IsKeyDown(key); } 



рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╕реНрдХреНрд░реАрди рдХреЛ рдЯреИрдк рдХрд░рдирд╛ рдХреАрдмреЛрд░реНрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрди рдЦреЗрд▓ рдХреЛ рдСрди-рд╕реНрдХреНрд░реАрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЗ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред рдПрдХ рдорд╛рдирдХ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛:

  Input.AddTouchKey(Keys.Down, hitPosDown); Input.AddTouchKey(Keys.Up, hitPosUp); Input.AddTouchKey(Keys.Left, hitPosLeft); Input.AddTouchKey(Keys.Right, hitPosRight); Input.Update(); 



рдЧреЗрдо рдореЗрдВ рдПрдХ рдЧреЛрдкрдиреАрдпрддрд╛ рд╕рдордЭреМрддрд╛ рдЬреЛрдбрд╝реЗрдВ



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


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

  protected override void Initialize() { base.Initialize(); SettingsPane.GetForCurrentView().CommandsRequested += PaneRequest; } void PaneRequest(SettingsPane sender, SettingsPaneCommandsRequestedEventArgs args) { UICommandInvokedHandler handler = new UICommandInvokedHandler(onPrivacyPolicyCommand); var privPolicyCmd = new SettingsCommand("PrivacyPolicyId", "Privacy Policy", handler); args.Request.ApplicationCommands.Add(privPolicyCmd); } void onPrivacyPolicyCommand(IUICommand command) { Launcher.LaunchUriAsync(new Uri("http://wincommunity.ru/baller/privacy.html")); } 


рдЖрдк рдЗрди рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ aka.ms/cgt2fr рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

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


All Articles