Skip to main content
October 16, 2009
Question

Preload extern swf results in weid behavior. It this normal?

  • October 16, 2009
  • 1 reply
  • 459 views

Hello,

I tried to load an external swf file. In this swf file i have an embeded movie so that i see the preloader in action.
What happens is, that while preloading i hear the movie playing in the background.
So when the external swf is at for example 20% preloading the timeline is already playing in the external swf.
Isn't that weird?

I also noticed that the Event.INIT get's executed sooner for example at 17%  progress.  This should be at 100% is it not?

And in CS3 i get the error while previewing the bandwidth profiler:

Error #2044: Unhandled IOErrorEvent:. text=Error #2036: Load Never Completed.

Does anyone know what is going wrong?

Regards,

Chris

This is the code i use:

package {

import flash.display.LineScaleMode;

import flash.display.DisplayObject;

import flash.net.URLRequest;

import flash.display.Loader;

import flash.display.Sprite;

import flash.events.Event;

import flash.events.ProgressEvent;

import flash.display.MovieClip;

/**

* @7111211 chris

*/

public class PreloadMain extends MovieClip {

private var _loaderSprite:Sprite;

private var _request : URLRequest;

private var _loader : Loader;

private var _myMovie:Sprite;

public function PreloadMain() {

addEventListener(Event.ADDED_TO_STAGE, init);

}

private function init(event:Event):void {

_request = new URLRequest("../swf/main.swf");

_loader = new Loader();

_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress, false, 0, true);

_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadingComplete, false, 0, true);

_loader.contentLoaderInfo.addEventListener(Event.INIT, loadInit)

_loader.load(_request);

drawLoader();

}

private function drawLoader():void {

trace("draw");

_loaderSprite = new Sprite();

_loaderSprite.graphics.lineStyle(1, 0x000000,1,false, LineScaleMode.NORMAL );

_loaderSprite.graphics.beginFill(0x0000FF, 1);

_loaderSprite.graphics.drawRect(0, 0, 150, 20);

_loaderSprite.graphics.endFill();

_loaderSprite.x = stage.stageWidth/2 -_loaderSprite.width/2 ;

_loaderSprite.y = stage.stageHeight/2 - _loaderSprite.height/2;

addChild(_loaderSprite);

}

function loadProgress(event:ProgressEvent):void

{

    var percentLoaded:Number = event.bytesLoaded / event.bytesTotal;

    percentLoaded = Math.round(percentLoaded * 100);

  _loaderSprite.scaleX = percentLoaded/100;

   trace("loaded " +String(uint(percentLoaded)) + "%" );

    //this.percentLoaded.text = String(uint(percentLoaded)) + "%";

}

function loadingComplete(event:Event):void

{

  removeChild(_loaderSprite);

  _myMovie = Sprite(_loader.content);

  addChild(_myMovie);

_loader.contentLoaderInfo.removeEventListener( ProgressEvent.PROGRESS, loadProgress);

_loader.contentLoaderInfo.removeEventListener(Event.COMPLETE, loadingComplete);

_loader = null;

   trace("Load Complete");

}

function loadInit(event:Event):void {

trace("load Init");

}

}

}     

This topic has been closed for replies.

1 reply

Inspiring
October 16, 2009

It is normal to receive Event.INIT before Event.Complete because on Init event you may access as3 on loaded swf, but the symbols of library may still downloading.