Баг в Flash IDE с Loader (Progress, close())
Столкнулся с очень интересным багом. Если во время загрузки контента, не дав загрузится до конца, начать грузить другой контент тем же лоадером, получим в итоге как в анекдоте 165% или даже больше процентов загрузки. Так же при загрузке контента, попытки закрыть поток методом close тоже будут не удачны.
Можете попробовать сами.
Actionscript:
-
private var _loader : Loader;
-
private var _info : TextField;
-
-
-
-
public function LoadMore() {
-
//INIT
-
var offset:uint = 20;
-
var btn1:Sprite = button("test1");
-
var btn2:Sprite = button("test2");
-
btn1.x = btn2.x = offset;
-
btn1.y = offset;
-
btn2.y = 3 * offset;
-
_loader = new Loader();
-
_loader.x = 150;
-
_loader.y = offset;
-
_info = new TextField();
-
_info.selectable = true;
-
_info.autoSize = TextFieldAutoSize.LEFT;
-
_info.x = offset;
-
_info.y = 350;
-
-
stage.scaleMode = StageScaleMode.NO_SCALE;
-
stage.align = StageAlign.TOP_LEFT;
-
-
//DISPLAY LIST
-
addChild(_loader);
-
addChild(btn1);
-
addChild(btn2);
-
addChild(_info);
-
-
//LISTENERS
-
btn1.addEventListener(MouseEvent.CLICK, onClick);
-
btn2.addEventListener(MouseEvent.CLICK, onClick);
-
-
//ACTIONS
-
}
-
-
-
-
private function button(str : String) : Sprite {
-
var btn : Sprite = new Sprite();
-
btn.graphics.lineStyle(0, 0x333333,0.4,true);
-
btn.graphics.beginFill(0xF6F6F7);
-
btn.graphics.drawRoundRect(0, 0, 100, 20, 10, 10);
-
btn.graphics.endFill();
-
btn.name = str;
-
var tf : TextField = new TextField();
-
tf.selectable = false;
-
tf.autoSize = TextFieldAutoSize.LEFT;
-
tf.text = str;
-
tf.x = (btn.width - tf.width) * 0.5;
-
tf.y =( btn.height - tf.height) * 0.5;
-
-
btn.mouseChildren = false;
-
btn.buttonMode = true;
-
btn.addChild(tf);
-
-
return btn;
-
}
-
-
private function loadIMG(path : String) : void {
-
var url : URLRequest = new URLRequest(path + ".jpg");
-
/*try{
-
_loader.unload();
-
trace("UNLOAD");
-
}catch (e : TypeError) {
-
//nothing
-
}
-
try{
-
_loader.close();
-
trace("CLOSE STREAM");
-
}catch (e : TypeError) {
-
//nothing
-
}catch (e : Error){
-
//nothing
-
}*/
-
_loader.load(url);
-
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
-
_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
-
}
-
-
/*
-
* EVENTS
-
*/
-
private function imageLoading(e : ProgressEvent) : void {
-
trace("LOADED:",e.bytesLoaded," TOTAL:", e.bytesTotal);
-
_info.text = "LOADED:"+e.bytesLoaded+" TOTAL:"+ e.bytesTotal;
-
}
-
-
private function imageLoaded(e : Event) : void {
-
-
}
-
private function onClick(e : MouseEvent) : void {
-
loadIMG(e.currentTarget.name);
-
}
Как это работает в WEB :
