eventListeners не будет регистрироваться, если спрайт не прикреплен к приложению.
Можете ли вы дать ссылку? Потому что я считаю, что проблема в другом.
Когда вы объявляете файл mxml с PhotoClass
в качестве корневого тега, вы расширяете PhotoClass. <mx:Image> tag
в mxml определяет открытую переменную типа Image в классе mxml; и у вас уже есть public var image:Image;
в суперклассе. Это создаст конфликт - я ожидаю ошибку времени компиляции.
Я предполагаю, что поскольку конструктор вызывается первым, он присваивает объект Image
общедоступной переменной image
. Когда выполняется mxml и создаются дочерние элементы, он назначает новый объект Image
для публичной переменной image
(вместо правильной выдачи ошибки). Теперь прослушиватель событий был добавлен к экземпляру Image
, созданному в конструкторе, но к тому времени, когда вы установите image.source
в setProperty
, это будет совершенно другой объект. Вот почему это работает, когда вы перемещаете прослушиватель событий на setPicture
- там вы назначаете его новому объекту.
Измените id
тега mxml Image на что-то другое, и оно будет работать, даже если прослушиватель событий был добавлен из конструктора. Измените имя public var image на другое, и вы получите ошибку времени компиляции в PhotoClass
.
Кстати, что делает тег Image в mxml - это для показа другого изображения? В этом случае вы должны изменить его id
.
<!-- MyCanvas.mxml -->
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Label id="lbl"/>
</mx:Canvas>
<!-- the main application class -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:local="*"
creationComplete="onCreate()" layout="vertical">
<local:MyCanvas id="canvas1"/>
<mx:Script>
<![CDATA[
public var canvas2:MyCanvas;
public function onCreate():void
{
this.canvas1.lbl.text = "MyCanvas_1";
canvas2 = new MyCanvas();
this.addChild(canvas2);
canvas2.addEventListener(FlexEvent.CREATION_COMPLETE, onCanvas2Created);
}
public function onCanvas2Created(e:FlexEvent):void
{
this.canvas2.lbl.text = "MyCanvas_2";
}
]]>
</mx:Script>
</mx:Application>