Ладно, расшифровываю. Об оптимизации я ни слова не говорил, ваш код работает именно так, как он написан.

Код AS3:
//Вызываеться при каждом обновлении SharedObject-а любой флешкой.
//Допустим soCrGame.data.msg=='aaa' и t.textField.text='bbb'.
private function doUpdate (se:SyncEvent):void{
//soCrGame.data.msg=='aaa'
_soCrGame.setProperty ("msg", t.textField.text);
//soCrGame.data.msg=='bbb'
tf.text = _soCrGame.data.msg;
//tf.text=='bbb' а должен быть 'aaa'.
}
Вы получаете данные от второй флэшки, затираете их и используете данные своей. Естественно, результат такой будто флэшки никак не взаимодействуют между собой.