Вы не обязательно нарушаете какие-либо правила здесь - если dispatchEvent
является публичной функцией, то вам разрешено вызывать ее из любого места, которое вам нравится.
Если вы хотите, чтобы все было чище с точки зрения инкапсуляции, вы могли бы вместо этого предоставить явную функцию, которую родитель может вызвать для определенного события, например:
child.doSomeChildAction();
и на дочернем классе:
public function doSomeChildAction():void
{
dispatchEvent(new ChildEvent(ChildEvent.IM_BEING_A_CHILD));
}
Таким образом, если вам нужно изменить способ, которым дочерний элемент отправляет событие, какой тип события отправляется, или какие действия происходят, когда дочерний элемент отправляет событие, все это инкапсулировано в дочернем классе, и поэтому будет проще управлять .