Hoewel ik het met Oh, When? zijn ranzige approach eens ben, voor dit geval dan, aangezien er nergens omhullende code te zien is, en dit dan het makkelijkst te implementeren is, wil ik dit toch ff posten:
Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
| #initclip 5
/*rSys NameSpace creator*/
if(!_global.rSys){
_global.rSys = new Object();
}
/*
rSys keyHandler constructor
this object should be seen as an extension to the Key object
*/
rSys.keyHandler = function(){
this.$init();
}
p = rSys.keyHandler.prototype;
/*
Public Methods Start
*/
p.setUpdateSpeed = function(fps){
this.us = 1000/fps;
}
p.getUpdateSpeed = function(){
return this.us;
}
p.start = function(){
this.interVal = setInterval(this, "$sendKeys", this.us);
}
p.stop = function(){
clearInterval(this.interVal);
}
/*
Public Methods End
*/
/*
Listeners Start
*/
p.onKeyDown = function(){
var k = Key.getCode();
if(!this.keys[k]){
this.broadcastMessage('onKeyDown_'+k);
}
this.Keys[k] = true;
}
p.onKeyUp = function(){
var k = Key.getCode();
delete this.Keys[k];
this.broadcastMessage('onKeyUp_'+k);
}
/*
Listeners End
*/
/*
Private Methods Start
*/
p.$init = function(){
this.Keys = new Object();
//Change this var (31 in this case) by your movie frame rate.
this.setUpdateSpeed(31);
this.start();
Key.addListener(this);
ASBroadcaster.initialize(this);
}
p.$sendKeys = function(){
var k = this.keys;
for(var n in k){
this.broadcastMessage('key_'+n)
}
}
/*
Private Methods End
*/
delete p;
#endinitclip |
(ff in een mc in de library flikkeren, linkage op gooien, en werken maar.)
Dan dit voor de test ff in de root:
Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| var mc = _root.attachMovie('square_mc_id', square_1, rSys.d++);
my_KeyHandler = new rSys.keyHandler();
my_KeyHandler.addListener(mc);
mc.speed = 10;
mc.key_37 = function(){
this._x -=this.speed;
}
mc.key_39 = function(){
this._x +=this.speed;
}
mc.key_40 = function(){
this._y +=this.speed;
}
mc.key_38 = function(){
this._y -=this.speed;
}
mc.onKeyDown_32 = function(){
this.speed /=2;
}
mc.onKeyUp_32 = function(){
this.speed *=2;
}
delete mc; |
Perfect multikeys
Truukje zit hem op meerdere plekken;
1. De key Repeat word afgevangen (dit kan nog wel eens stotteren opleveren).
2. Niet elk object hoeft te reageren met if reeksen op keystrokes
3. Controleerbare output van op dat moment ingedrukte toetsen.
4. pressed key events.
Misschien niet direct voor deze case bruikbaar, maar echt zeker weten handig.
edit:
voor de vragen omtrent rSys....eigen code library...dit soort dingen gebruik je veel
[
Voor 6% gewijzigd door
Verwijderd op 16-12-2002 23:28
]