Silverlight/XAML – Learning by Coding

[ tastenabfrage.xaml --> Grafik anzeigen ]

 1: <?xml version="1.0" encoding="UTF-8"?>
 2: <!-- coded by Thomas Meinike 02/08 -->
 3: <Canvas xmlns="http://schemas.microsoft.com/client/2007"
 4:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 5:         x:Name="block" Loaded="TastenInit">
 6: 
 7:   <Rectangle Canvas.Left="20" Canvas.Top="20" Width="600" Height="400"
 8:              Fill="#FFF" Stroke="#CCC"/>
 9: 
10:   <Canvas x:Name="symbol" Canvas.Left="20" Canvas.Top="20" MouseLeftButtonDown="Reset">
11:     <Rectangle Canvas.Left="0" Canvas.Top="0" Width="20" Height="20" Fill="#00C"/>
12:     <Polygon x:Name="l" Points="0,5 -5,10 0,15" Fill="#F00" Visibility="Collapsed"/>
13:     <Polygon x:Name="r" Points="20,5 25,10 20,15" Fill="#F00" Visibility="Visible"/>
14:     <Polygon x:Name="o" Points="5,0 10,-5 15,0" Fill="#F00" Visibility="Collapsed"/>
15:     <Polygon x:Name="u" Points="5,20 10,25 15,20" Fill="#F00" Visibility="Visible"/>
16:   </Canvas>
17: 
18:   <TextBlock Canvas.Left="20" Canvas.Top="430" FontFamily="Arial" FontSize="14"
19:    Foreground="#999" Text="Das Objekt lässt sich (nach Anklicken) mit den Pfeiltasten bewegen."/>
20: 
21: 
22:   <!-- // zusätzlich verwendeter JavaScript-Code:
23: 
24:   var block,symbol,l,r,o,u,sl,st// global
25: 
26:   function TastenInit(sender,eventArgs)
27:   {
28:     block=sender.findName("block");
29:     symbol=sender.findName("symbol");
30: 
31:     l=sender.findName("l");
32:     r=sender.findName("r");
33:     o=sender.findName("o");
34:     u=sender.findName("u");
35: 
36:     sl=symbol["Canvas.Left"];
37:     st=symbol["Canvas.Top"];
38: 
39:     // Pfeiltasten außerhalb des SL-Objektes abfangen
40:     window.document.onkeydown=function(evt)
41:     {
42:       var keynum,evt=evt || window.event;
43:       if(window.captureEvents)keynum=evt.which;
44:       else keynum=evt.keyCode;
45:       if(keynum>=37 && keynum<=40)return false;
46:     }
47:   
48:     block.addEventListener("KeyUp",KeyCheck);
49:     // KeyDown wird für die Pfeiltasten in SL 1.0 nicht unterstützt!       
50:   }
51: 
52: 
53:   function KeyCheck(sender,eventArgs)
54:   {
55:     var keynum,bl,bt;
56: 
57:     bl=symbol["Canvas.Left"];
58:     bt=symbol["Canvas.Top"];
59: 
60:     keynum=eventArgs.platformKeyCode;    // Tastencode verarbeiten
61:     if(keynum==37 && bl>20)bl-=10;       // Pfeiltaste links
62:     else if(keynum==38 && bt>20)bt-=10;  // Pfeiltaste oben
63:     else if(keynum==39 && bl<600)bl+=10// Pfeiltaste rechts
64:     else if(keynum==40 && bt<400)bt+=10// Pfeiltaste unten
65: 
66:     if(bl==20)l.visibility="Collapsed";
67:     else l.visibility="Visible";
68: 
69:     if(bl==600)r.visibility="Collapsed";
70:     else r.visibility="Visible";
71: 
72:     if(bt==20)o.visibility="Collapsed";
73:     else o.visibility="Visible";
74: 
75:     if(bt==400)u.visibility="Collapsed";
76:     else u.visibility="Visible";
77: 
78:     symbol["Canvas.Left"]=bl;
79:     symbol["Canvas.Top"]=bt;
80:   }
81: 
82: 
83:   function Reset()
84:   {
85:     l.visibility="Collapsed";
86:     r.visibility="Visible";
87:     o.visibility="Collapsed";
88:     u.visibility="Visible";
89: 
90:     symbol["Canvas.Left"]=sl;
91:     symbol["Canvas.Top"]=st;
92:   }
93: 
94:   -->
95: 
96: </Canvas>

[zum Anfang]