PDA

View Full Version : preload external swfs question



butter
January 19th, 2010, 07:10 PM
Hey guys,

I have my main flash file set up so on click of a nav button, an external swf file loads onto my main swf. Now, all i want to do is have a % pre-loader appear before these files land. I am confused about where to place the pre-loader (on the main file or the external swf) and does anybody have an easy way of making a pre-loader with just a %?

here is my code from my main file that calls my swf's




stop();

import caurina.transitions.*;

var Xpos:Number = 0;
var Ypos:Number = 0;
var swf:MovieClip;
var loader:Loader = new Loader();

var defaultSWF:URLRequest = new URLRequest("swfs/home.swf");

loader.load(defaultSWF);
loader.x = Xpos;
loader.y = Ypos;
addChild(loader);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Btns Universal function
function btnClick(event:MouseEvent):void {

removeChild(loader);
var newSWFRequest:URLRequest = new URLRequest("swfs/" + event.target.name + ".swf");
loader.load(newSWFRequest);
loader.x = Xpos;
loader.y = Ypos;
addChild(loader);
}
// Btn listeners
cadaver.addEventListener(MouseEvent.CLICK, btnClick);

lsnewton
January 19th, 2010, 07:52 PM
take a look here

http://www.gotoandlearn.com/play?id=85

butter
January 19th, 2010, 08:21 PM
alright, this appeared easy enough, however, i am getting an error. "Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed."

Where do i enter this code into mine?



//preloader
var l:Loader = new Loader();
l.contentLoaderInfo.addEventListener(ProgressEvent .PROGRESS, loop);
l.contentLoaderInfo.addEventListener(Event.COMPLET E, done);


function loop(e:ProgressEvent):void
{
var perc:Number = e.bytesLoaded / e.bytesTotal;
percent.text = Math.ceil(perc*100).toString();
}

function done(e:Event):void
{
removeChildAt(0);
percent = null;
addChild(l);
}

butter
January 20th, 2010, 12:17 AM
anybody? i need to get this site off the ground!

lsnewton
January 20th, 2010, 10:23 AM
This preloader explained there is an independent swf. You should load it from your main swf.

main.swf loads preloader.swf which loads target.swf

But if you prefer to preload the target swf directly from the main swf try this:

stop();

import caurina.transitions.*;

var Xpos:Number = 0;
var Ypos:Number = 0;
var swf:MovieClip;
var loader:Loader = new Loader();
var defaultSWF:URLRequest = new URLRequest("swfs/home.swf");
var percent:TextField = new TextField();
var perc:Number;

loader.load(defaultSWF);
loader.x = Xpos;
loader.y = Ypos;
addChild(loader);

// Create specific text formatting for the text field
var format:TextFormat = new TextFormat();
format.font = "Verdana";
format.color = 0x00FF00;
format.size = 12;
format.bold = true;
percent.defaultTextFormat = format;
percent.autoSize = TextFieldAutoSize.LEFT;
percent.x = 100;// any coordinate you want
percent.y = 100;// any coordinate you want
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

// Btns Universal function
function btnClick(event:MouseEvent):void {
var newSWFRequest:URLRequest = new URLRequest("swfs/" + event.target.name + ".swf");
loader.load(newSWFRequest);
loader.x = Xpos;
loader.y = Ypos;
loader.contentLoaderInfo.addEventListener(Progress Event.PROGRESS, loop);
loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, done);
addChild(percent);
}
// Btn listeners
cadaver.addEventListener(MouseEvent.CLICK, btnClick);

function loop(event:ProgressEvent):void {
perc = event.target.bytesLoaded / event.target.bytesTotal;
percent.text = Math.ceil(perc * 100).toString();
}

function done(e:Event):void {
removeChild(percent);
percent = null;
}

lsnewton
January 20th, 2010, 10:26 AM
Excuse me
loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, done);
not
loader.contentLoaderInfo.addEventListener(Event.CO MPLETE, done);

lsnewton
January 20th, 2010, 10:30 AM
??!!!!??
I think it's a bug. But you know, don't have space between co and mplete!

butter
January 20th, 2010, 11:27 AM
??!!!!??
I think it's a bug. But you know, don't have space between co and mplete!



thank you Isnewton, i have one last question. it is throwing an error titled "1151: A conflict exists with definition percent in namespace internal. towards this line var percent:TextField = new TextField();

butter
January 20th, 2010, 09:16 PM
anybody encounter this error?

butter
January 21st, 2010, 06:30 PM
anyone have a tip for a mate?

IQAndreas
January 21st, 2010, 06:45 PM
thank you Isnewton, i have one last question. it is throwing an error titled "1151: A conflict exists with definition percent in namespace internal. towards this line var percent:TextField = new TextField();
That likely means that something else was already named "percent" to begin with, so rename this variable to "percent_text" or something like that.