Примерно так.
Контроллер инитит модель и вью.
Вью подписывается на модель.
Контроллер подписывается на вью.
Когда из вью что-то прилетает в контроллер - он может дернуть модель и что-то в ней поменять. А модель в свою очередь собщит об изменении наружу.
Так что всё грубо говоря верно, только кода мало, думаю когда будет больше - появятся еще вопросы.
Вот мои комментарии к коду:
просто принимать что-то в модель и просто диспатчить наружу смысла нету.
По хорошему в этой функци должны происходить какие-то действия, которые меняют модель.
А модель просто диспатчит событие CHANGE без данных. Данные в ней доступны, и кому надо сможет их получить, когда узнает что что-то изменилось.
Т.е. именно эту ситуацию лучше было решить без контроллера вообще.
В модели лежит словарь:

Код AS3:
{ 0:0xF5F5D6, 1:0xDBF5D6}
А вью при клике просто лезет в модель и смотрит нужный цвет.
//==========================
Второй вариант.
Так как сделал ты. Но в модели есть переменная : currentColor
И в методе в котором у тебя свитч и диспатч пачки событий наружу - просто установка значения в эту переменную, и диспатч ОДНОГО события CHANGE вконце.
Вью получает событие, и рисует model.currentColor
//====================
Короче идея в том что в модели не только логика. Но и данные.
Т.е. логика которая не меняет данных - модели не очень нужна. Хотя туда можно добавить какие-то методы типа:

Код AS3:
function getCurrentColorByButtonIndex(id:int):uint //(который по сути геттер, и дергается он не из контроллера, а из вью)