root/as3/PotrAs/samples/potras/demo20070929/KanaKeyboard.as

リビジョン 94, 3.0 kB (コミッタ: nitoyon, コミット時期: 5 年 前)

timeoutの間隔を短くした

Line 
1 package
2 {
3         import com.nitoyon.potras.*;
4         import flash.display.*;
5         import flash.text.TextField;
6         import flash.events.*;
7         import flash.utils.*;
8         import caurina.transitions.Tweener;
9
10         [SWF(width="640", height="480", backgroundColor="#ffffff")]
11         public class KanaKeyboard extends Sprite
12         {
13                 private static var TABLE:Object =
14                         {"3" : "あ", "e" : "い", "4" : "う", "5" : "え", "6" : "お",
15                          "t" : "か", "g" : "き", "h" : "く", ":" : "け", "b" : "こ",
16                          "x" : "さ", "d" : "し", "r" : "す", "p" : "せ", "c" : "そ",
17                          "q" : "た", "a" : "ち", "z" : "つ", "w" : "て", "s" : "と",
18                          "u" : "な", "i" : "に", "1" : "ぬ", "," : "ね", "k" : "の",
19                          "f" : "は", "v" : "ひ", "2" : "ふ", "^" : "へ", "-" : "ほ",
20                          "j" : "ま", "n" : "み", "]" : "む", "/" : "め", "m" : "も",
21                          "7" : "や", "8" : "ゆ", "9" : "よ",
22                          "o" : "ら", "l" : "り", "." : "る", ";" : "れ", "\\" : "ろ",
23                          "0" : "わ", "!" : "を", "y" : "ん",
24                          "@" : "@"};
25
26                 private var lists:Object = {};
27
28                 public function KanaKeyboard()
29                 {
30                         var t:TextField = new TextField();
31                         addChild(t);
32                        
33                         var sprites:Object = {};
34                         var keys:Array = [];
35                         for(var key:String in TABLE)
36                         {
37                                 keys.push(key);
38                         }
39
40                         var traceCallback:Function = function():void
41                         {
42                                 t.text = "Loading... " + keys.length.toString();
43                                 key = keys.shift();
44                                 var list:ClosedPathList = PotrAs.traceLetter(TABLE[key], 200);
45                                 lists[key] = list;
46
47                                 if(keys.length == 0)
48                                 {
49                                         removeChild(t);
50                                         stage.addEventListener("keyDown", keyDownHandler);
51                                 }
52                                 else
53                                 {
54                                         setTimeout(traceCallback, 10);
55                                 }
56                         }
57                         traceCallback();
58                 }
59
60                 private function keyDownHandler(event:*):void
61                 {
62                         var c:String = String.fromCharCode(event.charCode).toLowerCase();
63                         var list:ClosedPathList = lists[c];
64                         if(list)
65                         {
66                                 var sprite:Sprite = new Sprite();
67                                 sprite.graphics.beginFill(0x999999);
68                                 sprite.graphics.lineStyle(1, 0x000000);
69                                 list.draw(sprite.graphics);
70                                 sprite.graphics.endFill();
71                                 var s:Sprite = new Sprite();
72                                 s.addChild(sprite);
73                                 sprite.x = -sprite.width / 2;
74                                 sprite.y = -sprite.height / 2;
75
76                                 s.x = loaderInfo.width / 2;
77                                 s.y = loaderInfo.height / 2;
78
79                                 s.alpha = 0.2;
80                                 s.scaleX = s.scaleY = 0.01;
81                                 s.rotation = 360 * Math.random() - 180;
82                                 var r:Number = 400 * Math.random();
83                                 var theta:Number = Math.PI * 2 * Math.random();
84
85                                 Tweener.addTween(s, {
86                                         time : 1.5,
87                                         alpha : 1,
88                                         transition : "easeInCubic"
89                                 });
90
91                                 Tweener.addTween(s, {
92                                         time : 0.7,
93                                         delay : 1.8,
94                                         alpha : 0
95                                 });
96
97                                 Tweener.addTween(s, {
98                                         time : 2.5,
99                                         rotation : 360 * Math.random() - 180,
100                                         transition : "easeOutCubic"
101                                 });
102
103                                 Tweener.addTween(s, {
104                                         time : 2.5,
105                                         x : s.x + r * Math.sin(theta),
106                                         y : s.y + r * Math.cos(theta),
107                                         transition : "easeInCubic",
108                                         _scale: 12.0,
109                                         onComplete : function():void{
110                                                 removeChild(s);
111                                         }
112                                 });
113
114                                 addChild(s);
115                         }
116                 }
117         }
118 }
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。