-
Notifications
You must be signed in to change notification settings - Fork 0
A library inspired by the C# Rx framework.
License
aemoncannon/as3-observer
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
An AS3 library inspired by the C# Rx framework. Just a proof of concept so far.
Here's how you might synthesize a mouseDrag event:
var circle:Sprite = new Sprite();
var mouseDown:IObservable = Obs.es(circle, "onMouseDown");
var mouseMove:IObservable = Obs.es(circle, "onMouseMove");
var mouseUp:IObservable = Obs.es(circle, "onMouseUp");
var mouseDrag:IObservable = mouseDown.selectMany(function(ea:Event):IObservable{
return mouseMove.until(mouseUp).select(function(ea:Event):Event{ return new Event("onMouseDrag"); });
});
mouseDrag.attach(Obs.f(function(ea:String):void{
trace("Just got a drag event!");
}));
Here's a 3 key sequence, automatically cancelled if the wrong key is pressed.
// Helper for making an IObservable of key events of a specific type
function keyStream(key:int):IObservable{
return Obs.es(stage, "onKeyDown").select(function(e:KeyboardEvent):Boolean{ return e.keyCode == key; })
}
// Helper for making an IObservable of key events that are NOT a specific type
function notKeyStream(key:int):IObservable{
return Obs.es(stage, "onKeyDown").select(function(e:KeyboardEvent):Boolean{ return e.keyCode != key; })
}
// Wait for an 'a'
var abcPressed:IObservable = keyStream(Keyboard.A).selectMany(function(ea:Event):IObservable{
// then wait for a 'b', but cancel if something else is pressed
return keyStream(Keyboard.B).until(notKeyStream(Keyboard.B)).selectMany(function(ea:Event):IObservable{
// then wait for a 'c', but cancel if something else is pressed
return keyStream(Keyboard.C).until(notKeyStream(Keyboard.C)).select(function(ea:Event):Event{
// dispatch the our new event
return new Event("onABC");
});
});
});
abcPressed.attach(Obs.f(function(ea:Event):void{
trace("a,b,c has been pressed!");
}));About
A library inspired by the C# Rx framework.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published