Package detail

msignal

A Haxe port of the ActionScript 3 Signals library that leverages Haxe type parameters

logging, debugging, profiling, console

readme

Overview

Signals are highly scalable and lightweight alternative to Events.

msignal.Signal is a type safe port of Robert Penner’s AS3 Signals leveraging Haxe generics.

Benefits:

  • Avoids costly native event bubbling on different platforms (e.g. HTML DOM events) that impact performance
  • Type safe signature for dispatching and observer handlers
  • Typing excluded from output (lighter, cleaner code without compromising integrity)

You can download some examples of msignal usage here.

Importing

All required classes can be imported through msignal.Signal

import msignal.Signal;

Basic usage

var signal = new Signal0();
signal.add(function(){ trace("signal dispatched!"); })
signal.dispatch();

Extending

class MySignal extends Signal2<String, Int>
{
    public function new()
    {
        super();
    }
}

Typed parameters

var signal = new Signal1<String>();
signal.add(function(i:Int){}); // error: Int -> Void should be String -> Void
signal.dispatch(true) // error Bool should be String

Numbers of parameters:

var signal0 = new Signal0();
var signal1 = new Signal1<String>();
var signal2 = new Signal2<String, String>();

Slots:

var signal = new Signal0();
var slot = signal.add(function(){});
slot.enabled = false;
signal.dispatch(); // slot will not dispatch

Slot parameters:

var signal2 = new Signal2<String, String>();
var slot = signal.add(function(s1, s2){ trace(s1 + " " + s2); });
slot.param1 = "Goodbye";
signal.dispatch("Hello", "Mr Bond"); // traces: Goodbye Mr Bond

changelog

1.2.5

  • Haxe 4 compatibility.

1.2.4

  • Parameters are optional (marked with ?), so the code can be compiled on Haxe 3.2 and newer with Mockatoo.

1.2.3

  • Support DCE by adding :keep meta, only assert in debug
  • Test in debug

1.2.2

  • Fixed slot priority bug.

1.2.1

  • Added haxelib.json.

1.2.0

  • Adds support for Haxe 3.

1.1.2

  • Adds support for C++ target and value matching of non-enum types on EventSignal slots.

1.1.1

  • Always set event target, not only when bubbling
  • Check type filter of EventSlot -BEFORE- removing (for addOnce)

1.1.0

  • Improved SignalEvent implementation

1.0.0

  • Initial release