для статического свойства функцию вещания придется переложить на статический же диспатчер:

Код AS3:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class Test extends Sprite
{
public function Test():void
{
//подписываемся
Class1.addEventListener(Event.CHANGE, watchS);
//меняем/смотрим трейс
Class1.s = "value";
Class1.s = "new value";
}
private function watchS(evnt:Event):void
{
trace("Class1.s changed to " + Class1.s);
}
}
}

Код AS3:
package
{
import flash.events.*;
public class Class1
{
private static var _s:String="";
private static var _dispatcher:EventDispatcher = new EventDispatcher();
static public function addEventListener (type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false) : void
{
_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
}
static public function get s():String { return _s; }
static public function set s(value:String):void
{
if (_s == value) return;
_s = value;
_dispatcher.dispatchEvent(new Event(Event.CHANGE));
}
}
}
upd: добавил проверку (_s == value), чтоб не слать холостых событий