![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
помогите пожалуйста, никак не удаётся полностью удалить загруженный Loader'ом контент.
для примера грузим ролик с двумя кадрами, в первом кадре которого прописан trace. по клику всё по идее должно было бы удалиться, но всё-равно срабатывает трейс. гугл сказал, что у некоторых такая бага была только во Flash IDE, а в браузере или в standalone player всё срабатывает. проверил, в браузере тоже не удаляется. замечу, что если ролик подобный внешнему сделать в библиотеке и добавлять его через addChild и потом удалять - то всё впорядке, работает как и ожидается. package {
import flash.display.*;
import flash.events.*;
import flash.net.*;
public class GCTest extends Sprite {
public function GCTest() {
stage.addEventListener(MouseEvent.CLICK, clickHandler);
var contentLoader = new Loader();
contentLoader.load(new URLRequest('ef.swf'));
addChild(contentLoader);
}
private function clickHandler(e:MouseEvent):void {
trace('click: '+e);
if (e.target is Loader) {
var contentLoader:Loader = Loader(e.target);
contentLoader.unload();
removeChild(contentLoader);
contentLoader = null;
}
//GC enforcing
try {
new LocalConnection().connect('gcForce');
new LocalConnection().connect('gcForce');
} catch (err:*) {}
}
}
}
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я бы для начала все-таки не стал тестить автогенерируемый класс в CS3 в купе с нормальным классом.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
GC во флеше довольно ленивый, пока не наберется некоторое количество забитой мусором памяти, он и не шевельнется.
Есть граница, если не ошибаюсь, кратная двум мегабайтам, тогда он хоть что-то начинает делать. В данном случае до двух мегабайт далеко. |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 269
|
В дебаг версии помимо кода в исходнике
вызывал System.gc(). Один фиг. Так что дело не в сборщике мусора. |
|
|||||
|
Регистрация: Dec 2007
Сообщений: 269
|
А если удалить код из подгружаемого ролика, эти 7м все-равно останутся?
upd: Просто заткнуть вторую флешку получилось, правда хитро очень )). Если успеть вызвать System.gc() два раза между трейсами, но не подряд )), то 2я таки сносится. Т.е. на мышиный клик подвесил gc(), и быстро кликаю 2 раза, если между кликами трейс не втисался, флешка затихает. Что это значит я не очень понимаю )). Наверное действительно какая-то лажа с автогенерируемыми классами. Последний раз редактировалось badun; 22.02.2008 в 01:46. |
|
|||||
|
badun, если из кадра подгружаемой флешки удалить trace(...), то судя по totalMemory оно таки удаляется ага. ура. спасибо за мысль
вот так вот. код в кадрах нельзя использоваться даже для теста. проверять только по totalMemoty |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Я думаю, «лажа» в addFrameScript.
|
|
|||||
|
Регистрация: Dec 2007
Сообщений: 269
|
после таких фокусов становятся понятными опасения Ивана Дембицкого ))
|
![]() |
![]() |
Часовой пояс GMT +4, время: 12:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|