грейпфрукт ударил ногтем по голове, но если быть более точным, его называют потоком событий. Проще говоря, существует 3 фазы, когда dispatchEvent () вызывается из экранного объекта в списке отображения, это фаза захвата, целевая фаза и пузырьковая фаза. На этапе захвата флэш-плеер перемещается вниз по списку отображения со сцены к экранному объекту, который вызвал dispatchEvent (). Затем во время целевой фазы целевой экранный объект отправляет событие. Затем в фазе пузырьков событие всплывает до стадии.
В вашем случае, если вы хотите, чтобы ваш экранный объект Configurator слышал событие, отправленное из вашего экранного объекта FramedPhoto, вам нужно добавить FramedPhoto в его список отображения.
Я позволил себе добавить класс документа в ваш проект, так как вы все равно должны избегать использования временной шкалы.
package
{
import com.Configurator;
import flash.display.MovieClip;
public class Main extends MovieClip
{
public function Main():void
{
init();
}// end function
private function init():void
{
var configurator:Configurator = new Configurator();
addChild(configurator);
}// end function
}// end class
}// end package
Я импортировал ваш класс Configurator (переименовал пакет из abc в com), объявил, создал его и добавил в список отображения.
package com
{
import com.FramedPhoto;
import flash.display.Sprite;
import flash.events.Event;
public class Configurator extends Sprite
{
public function Configurator():void
{
var framedPhoto:FramedPhoto = new FramedPhoto();
addChild(framedPhoto);
framedPhoto.addEventListener(FramedPhoto.FRAMED_PHOTO_LOADED, framedPhotoLoadedHandler);
}// end function
public function framedPhotoLoadedHandler(e:Event):void
{
trace("framePhotoLoadedHandler()");
}// end function
}// end function
}// end function
Затем в вашем классе Configurator я импортировал ваш класс FramedPhoto, объявил и создал его экземпляр. Затем я добавил к нему прослушиватель событий, который прослушивает событие, отправляемое из экранного объекта framePhoto, и вызывает framedPhotoLoadedHandler ().
package com
{
import flash.display.Sprite;
import flash.events.Event;
public class FramedPhoto extends Sprite
{
public static const FRAMED_PHOTO_LOADED = 'framedPhotoLoaded';
public function FramedPhoto():void
{
addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
}// end function
private function addedToStageHandler(e:Event):void
{
dispatchEvent(new Event(FRAMED_PHOTO_LOADED, true));
}// end function
}// end function
}// end function
Наконец, в классе FramePhoto я добавил прослушиватель событий, который прослушивает, когда экранный объект FramePhoto добавляется на сцену. Когда он добавлен на сцену, он вызовет addToStageHandler (), который отправит событие и будет перехвачен в родительском экранном объекте Configurator.
Надеюсь, это помогло:)