|
|
|||||
Регистрация: Aug 2010
Сообщений: 144
|
чистка мусора
Пытаюсь очистить элементы со сцены чтобы они не накоплялись (чистка мусора). Но не как не могу понять как это сделать в обычном примере там где нет цикла все получаеться вот код
import flash.display.MovieClip; var koord_1:Number; var koord_2:Number; var boo:Boolean = false var obj: MovieClip; var _exp: MovieClip = new exp(); addChild(_exp); for(var i:int=0; i<5;i++) { var mc: MovieClip = new mk(); mc.y=40*i+50 addChild(mc); mc.addEventListener(MouseEvent.CLICK, mcClick) } function mcClick(e:MouseEvent): void { obj = MovieClip(e.target); if(boo==false) { removeChild(_exp); boo = true; //trace(obj.y); koord_1=obj.y; //trace (koord_1); //trace("вы нажали на кнопку") addChild(_exp); trace('na scene') } if(koord_1==obj.y) { //boo = false; trace('нечего не делаем'); _exp.x=200; _exp.y=200; //trace (koord_1); //trace (obj.y); } else { //trace(obj.y); trace("вы нажали на кнопку"); boo = false; removeChild(_exp); addChild(_exp); } } А вот более чложный пример где такая чистка не проходит: import flash.net.URLLoader; import flash.events.Event; import flash.events.IOErrorEvent; import flash.events.SecurityErrorEvent; import flash.net.URLRequest; import flash.display.MovieClip; import flash.display.IBitmapDrawable; import flash.text.TextField; import fl.motion.easing.Exponential; //Начинаем работу с ползунком, делаем scrol var boo:Boolean; var koord_1:Number; var btnb: MovieClip = new btn_(); var listingChild: MovieClip = new listingChild_(); var scrollBar:MovieClip = new scroll_Bar(); var scroller: MovieClip = new scroller_(); var listing: MovieClip = new listing_(); var _exp: MovieClip = new exp(); const URL:String = "xml.xml"; var loader:URLLoader; init(); function init():void { loader = new URLLoader(); loader.addEventListener(Event.COMPLETE, comleteLoading); var request:URLRequest = new URLRequest(URL); loader.load(request); } function comleteLoading(e:Event):void { //var text:String = loader.data; var xml:XML = XML(e.target.data); var xmlList = xml.children(); var obj:MovieClip; for(var i:int=0; i<xmlList.length(); i++) { var xmlListchild = xml.menu[i].children(); //trace(xmlListchild[2]) var temp:MovieClip = new btn(); temp.x = 30; temp.y = 24*i; temp.buttonMode = true; temp.useHandCursor = true; addChild(temp); var txt:TextField = new TextField(); var newFormat:TextFormat = new TextFormat(); txt.x = 0; txt.y = 3; txt.selectable = false; txt.width = 200; txt.height = 20; newFormat.font = "Arial"; newFormat.bold=true; newFormat.size = 12; newFormat.color=0x000000; txt.text = xml.menu[i].@id; //trace(xml.menu[i].@id); temp.addChild(txt); txt.setTextFormat(newFormat); txt.mouseEnabled = false; temp.addEventListener(MouseEvent.CLICK, btnClick) temp.length = xmlListchild.length(); temp.children=xml.menu[i].children(); } function btnClick (e:MouseEvent):void { function removeAllChildren() : void { while (listing.numChildren) listing.removeChildAt(0); } removeAllChildren(); trace('delete'); obj = MovieClip(e.target); for(var i:int=0; i<e.target.length;i++) { addChild(listing); var btn_child:MovieClip = new btnchild(); btn_child.x = temp.width+temp.x; btn_child.y = i*23.5; var txtChild:TextField = new TextField(); var newFormat:TextFormat = new TextFormat(); txtChild.x = 0; txtChild.y = 5; txtChild.selectable = false; txtChild.width = 200; txtChild.height = 20; newFormat.size = 13; newFormat.color=0xffffff; txtChild.text = e.target.children[i].attributes()[0]; listing.addChild(btn_child); btn_child.addChild(txtChild); txtChild.setTextFormat(newFormat); txtChild.mouseEnabled = false; } if(listing.height>=stage.stageHeight) { boo==true; trace(listing.height); scroller.height = (scrollBar.height/(listing.height))*scrollBar.height; addChild(scrollBar); scrollBar.addChild(scroller); /*scroller.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); stage.addEventListener(MouseEvent.MOUSE_UP, place); stage.addEventListener(MouseEvent.MOUSE_WHEEL, scrollandBar);*/ } Последний раз редактировалось sneltyn; 12.12.2011 в 20:05. |
|
|||||
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Что знаем, то пишем, чего не знаем, того не пишем. Сперва узнаем, потом пишем. Никак иначе не писать. Разбивать задачу на мелнькие простые подзадачи. Чтоб если что-то не работает, то чётко найти подзадачу, в которой не сработало как надо.
У вас НЕТ удаления! removeChild и потом addChild - не удалит же блин. В чложном примере вообще нет. Не знаете, что такое сборка мусора - тоже не пишите про это. Пишите как в конце, нормальными понятными словами (не понял, что конкретно "предыдущее" и "новое", оно наверное должно быть из кода понятно, но вот не понял %).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
Регистрация: Aug 2010
Сообщений: 144
|
Ну если я напишу так:
for(var i:int=0; i<e.target.length;i++) { removeChild(listing); var btn_child:MovieClip = new btnchild(); btn_child.x = temp.width+temp.x; btn_child.y = i*23.5; var txtChild:TextField = new TextField(); var newFormat:TextFormat = new TextFormat(); txtChild.x = 0; txtChild.y = 5; txtChild.selectable = false; txtChild.width = 200; txtChild.height = 20; newFormat.size = 13; newFormat.color=0xffffff; txtChild.text = e.target.children[i].attributes()[0]; listing.addChild(btn_child); btn_child.addChild(txtChild); txtChild.setTextFormat(newFormat); txtChild.mouseEnabled = false; aadChild(listing); } |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
aadChild доставляет
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Aug 2010
Сообщений: 144
|
Ну вот проблему решил сам)))
Может кому понадобиться подобная очистка тогда юзайте очистку дочерних элементов: |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Регистрация: Aug 2010
Сообщений: 144
|
Было дело)
А может мне кто то сказать насколь не коректный код, и ткнуть меня на это что бы я больше так не делал. спс) |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
- Для начала почитайте правила оформления кода, конвенцию. - Научитесь выделять блоки кода в небольшие функции/методы, а не пихать все в одну-две функции. - И в идеале - не писать в кадрах и познакомиться с ООП. PS: по теме - удачно впихнули removeAllChildren(), в принципе по-другому тут не решить задачу.
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 12.12.2011 в 23:00. |
|
|||||
Регистрация: Aug 2010
Сообщений: 144
|
Спасибо прийми при следуещем написании кода! Я делал на скорую руку поэтому так и получилось, а вообще учу C++ as 3.0 просто нравиться и хочу научиться нормально на нем писать приложения, к ООП только подхожу!
|
Часовой пояс GMT +4, время: 11:03. |
|
« Предыдущая тема | Следующая тема » |
|
|