![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 141
|
Собственно заголовком все сказано, исходник ниже. Из вне создается несколько таких объектов. Я не могу догнать вобще как такое случилось, что после removeEventListener у меня продолжается вызываться обработчик.
обратите внимание на блок с trace("before", death.id) по trace("after", death.id); package *** { *** import flash.display.Bitmap; import flash.events.Event; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.text.TextFormat; public class DeathImage extends SpriteControl { private static const CLOSE_DEATH_BACKGROUND_IMAGE:String = "images/ui/death/closeDeath.png"; private static const BRONZE_DEATH_BORDER_IMAGE:String = "images/ui/death/bronzeDeathBorder.png"; private static const SILVER_DEATH_BORDER_IMAGE:String = "images/ui/death/silverDeathBorder.png"; private static const GOLD_DEATH_BORDER_IMAGE:String = "images/ui/death/goldDeathBorder.png"; private static const BRONZE_DEATH_NUMBER_BACKGROUND_IMAGE:String = "images/ui/death/bronzeDeathNumberBackground.png"; private static const SILVER_DEATH_NUMBER_BACKGROUND_IMAGE:String = "images/ui/death/silverDeathNumberBackground.png"; private static const GOLD_DEATH_NUMBER_BACKGROUND_IMAGE:String = "images/ui/death/goldDeathNumberBackground.png"; private var __width:int = 157; private var __height:int = 150; private var __death:Death; private var __isLoaded:Boolean = false; public function DeathImage(controls:Controls) { super(controls); this.addEventListener(Event.ADDED_TO_STAGE, __addedToStage); } override public function set width(value:Number):void { __width = value; super.width = width; } override public function get width():Number { return __width; } override public function set height(value:Number):void { __height = value; super.height = height; } override public function get height():Number { return __height; } public function set death(value:Death):void { __death = value; } public function get death():Death { return __death; } private function __addedToStage(e:Event):void { this.removeEventListener(Event.ADDED_TO_STAGE, __addedToStage); if (!__death) return; var images:Array = []; switch (death.conquestLevel) { case 0: images.push(CLOSE_DEATH_BACKGROUND_IMAGE); break; case 1: images.push(BRONZE_DEATH_BORDER_IMAGE, BRONZE_DEATH_NUMBER_BACKGROUND_IMAGE); break; case 2: images.push(SILVER_DEATH_BORDER_IMAGE, SILVER_DEATH_NUMBER_BACKGROUND_IMAGE); break; case 3: images.push(GOLD_DEATH_BORDER_IMAGE, GOLD_DEATH_NUMBER_BACKGROUND_IMAGE); break; } if (death.conquestLevel > 0) images.push(death.url); trace("before", death.id) controls.images.addEventListener(ImagesEvent.IMAGES_LOAD_COMPLETE, __imagesLoadComplete); controls.images.loadImages(images); } private function __imagesLoadComplete(e:ImagesEvent):void { /*if (__isLoaded) return;*/ __isLoaded = true; controls.images.removeEventListener(ImagesEvent.IMAGES_LOAD_COMPLETE, __imagesLoadComplete); trace("after", death.id); var deathImage:Bitmap; var borderImage:Bitmap; var titleImage:Bitmap; switch (death.conquestLevel) { case 0: var closeDeath:Bitmap = controls.images.getLoadedImage(CLOSE_DEATH_BACKGROUND_IMAGE); this.addChild(closeDeath); break; case 1: borderImage = controls.images.getLoadedImage(BRONZE_DEATH_BORDER_IMAGE); titleImage = controls.images.getLoadedImage(BRONZE_DEATH_NUMBER_BACKGROUND_IMAGE); break; case 2: borderImage = controls.images.getLoadedImage(SILVER_DEATH_BORDER_IMAGE); titleImage = controls.images.getLoadedImage(SILVER_DEATH_NUMBER_BACKGROUND_IMAGE); break; case 3: borderImage = controls.images.getLoadedImage(GOLD_DEATH_BORDER_IMAGE); titleImage = controls.images.getLoadedImage(GOLD_DEATH_NUMBER_BACKGROUND_IMAGE); break; } if (death.conquestLevel > 0) { deathImage = controls.images.getLoadedImage(death.url); deathImage.smoothing = true; var imageSize:int = width - 30; var koef:Number = deathImage.width / imageSize; deathImage.scaleX /= koef; deathImage.scaleY /= koef; deathImage.x = width / 2 - deathImage.width / 2; deathImage.y = height / 2 - deathImage.height / 2; this.addChild(deathImage); if (borderImage) this.addChild(borderImage); if (titleImage) { titleImage.x = width / 2 - titleImage.width / 2; titleImage.y = 10; this.addChild(titleImage); var textField:TextField = TextFormats.defaultTextField; textField.defaultTextFormat = new TextFormat(TextFormats.EMBED_FONT, 12); textField.text = death.id.toString(); textField.autoSize = TextFieldAutoSize.LEFT; textField.x = width / 2 - textField.width / 2 - 1; textField.y = 11; this.addChild(textField); } } } } } before 10 before 13 before 99 before 2 before 51 before 127 before 126 before 128 after 10 after 13 after 99 after 2 after 51 after 127 after 126 after 128 after 128 after 126 after 128 after 127 after 126 after 128 after 51 after 127 after 126 after 128 after 2 after 51 after 127 after 126 after 128 after 99 after 2 after 51 after 127 after 126 after 128 after 13 after 99 after 2 after 51 after 127 after 126 after 128 Дабы хоть как-то решить вопрос пришлось сделать проверку на то, произошла ли уже загрузка в объекте или нет. Где я накосячил никак не могу понять ![]() |
![]() |
Часовой пояс GMT +4, время: 20:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|