Note that there are some explanatory texts on larger screens.

plurals
  1. POFlex 3 preloaders died with Flash 11/11.5
    primarykey
    data
    text
    <p>I really need help, I've been dealing with this for months. Basically I have an old Flex 3 app with a custom preloader. Once everyone upgraded to Flash 11 and 11.5 the preloader has disappeared. I'm trying to get the thing working with Flash Builder 4.7, linking in 3.6 Libraries, but alas it's seems to be failing silently. Even the standard Preloader is boinked with "Loading library 0 of " (however it does show up)...I'm using the now classic "DownloadProgressBar" extended custom preloader pattern.</p> <pre><code>package com.timberdesignco.preloader { import flash.display.Sprite; import flash.events.Event; import flash.events.ProgressEvent; import flash.events.TimerEvent; import flash.utils.Timer; import mx.events.FlexEvent; import mx.preloaders.DownloadProgressBar; public final class CustomPreloader extends DownloadProgressBar { public var loader : LoadScreen; private var _timer : Timer; public function CustomPreloader() { super(); } override public function initialize() : void { super.initialize(); this.loader = new LoadScreen(); this.addChild(this.loader); this._timer = new Timer(10); this._timer.addEventListener(TimerEvent.TIMER, handleTimerTick); this._timer.start(); } override public function set preloader(preloader : Sprite):void { preloader.addEventListener(ProgressEvent.PROGRESS, SWFDownLoadScreen); preloader.addEventListener(Event.COMPLETE, SWFDownloadComplete); preloader.addEventListener(FlexEvent.INIT_PROGRESS, FlexInitProgress); preloader.addEventListener(FlexEvent.INIT_COMPLETE, FlexInitComplete); } private function SWFDownLoadScreen(event : ProgressEvent) : void { var prog : Number = event.bytesLoaded / event.bytesTotal * 100; if (this.loader) { this.loader.progress = prog; } } private function handleTimerTick(event : TimerEvent) : void { this.stage.addChild(this); this.loader.x = (this.stage.stageWidth - this.loader.width) / 2 - 35; this.loader.y = (this.stage.stageHeight - this.loader.height) / 2; this.loader.refresh(); } private function SWFDownloadComplete(event : Event) : void {} private function FlexInitProgress(event : Event) : void {} private function FlexInitComplete(event : Event) : void { this.loader.ready = true; this._timer.stop(); this.dispatchEvent(new Event(Event.COMPLETE)); } override protected function showDisplayForInit(elapsedTime:int, count:int):Boolean { return true; } override protected function showDisplayForDownloading(elapsedTime:int, event:ProgressEvent):Boolean { return true; } } } </code></pre> <hr> <pre><code>package com.timberdesignco.preloader { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Graphics; import flash.display.Loader; import flash.display.Sprite; import flash.text.Font; import flash.text.TextField; import flash.text.TextFormat; import flash.utils.ByteArray; import mx.graphics.codec.PNGEncoder; public class LoadScreen extends Loader { //~ Instance Attributes ----------------------------------------------- [Embed(source="/assets/CreightonReg.otf", fontFamily="Creighton")] private var CreightonEmbedded:Class; private var creightonEmbeddedFont:Font = new CreightonEmbedded(); [Embed(source="/assets/LoadingBar-Bark.png")] private var MyLogoClass: Class; private var _logo : Bitmap; private var _logoData : BitmapData; private var isReady : Boolean = false; public var progress : Number; //~ Constructor ------------------------------------------------------- public function LoadScreen() { super(); this.progress = 0; this._logo = new MyLogoClass as Bitmap; } //~ Methods ----------------------------------------------------------- public function refresh() : void { this._logoData = this.draw(); var encoder : PNGEncoder = new PNGEncoder(); var bytes : ByteArray = encoder.encode(this._logoData); this.loadBytes(bytes); } override public function get width() : Number { return 300; } override public function get height() : Number { return 300; } private function draw() : BitmapData { // create bitmap data to create the data var data : BitmapData = new BitmapData(this.width, this.height, true, 0); // draw the logo //data.draw(this._logo.bitmapData, null, null, null, null, true); // draw the progress bar var s : Sprite = new Sprite(); var g : Graphics = s.graphics; // draw the bar background //g.beginFill(_BarBackground); //g.lineStyle(2, _BarOuterBorder, 1, true); //var px : int = (this.width - _BarWidth) / 2; //var py : int = _TopMargin + _LogoHeight + _Padding; //g.drawRoundRect(px, py, _BarWidth, _BarHeight, 2); //var containerWidth : Number = _BarWidth - 4; //var progWidth : Number = containerWidth * this.progress / 100; //g.beginFill(_BarColor); g.lineStyle(2, 0xa1865e); //g.drawRect(px + 1, py + 1, progWidth, _BarHeight - 3); var rad:int = (5 * (this.progress / 10)); for(var i:int = this.progress; i &gt; 0; i--) { g.drawCircle(this.width / 2 + 5, this.height / 2, (5 * (int)(i / 10) + 1)); data.draw(this._logo.bitmapData, null, null, null, null, true); } var startX:Number = this.width / 2 + 5; var endX:Number = startX + 50;//(rad / 2); var startY:Number = (this.height / 2); // - Math.sqrt(Math.pow(rad, 2) - (Math.pow(startX - endX, 2))); var endY:Number = 50; g.moveTo(startX, startY); g.lineTo(endX, endY); g.lineTo(endX + 20, endY); var textFormat:TextFormat = new TextFormat(); textFormat.color = 0xa1865e; textFormat.font = creightonEmbeddedFont.fontName; textFormat.size = 14; textFormat.letterSpacing = 2; var text:TextField = new TextField(); text.defaultTextFormat = textFormat; text.embedFonts = true; text.text = Math.ceil(progress) + "%"; text.x = endX + 28; text.y = endY - 14; text.textColor = 0xa1865e; text.width = 100; text.height = 20; s.addChild(text); data.draw(s); return data; } public function set ready(value : Boolean) : void { this.isReady = value; this.visible = !this.isReady; } public function get ready() : Boolean { return this.isReady; } } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload