Skip to main content
Inspiring
April 30, 2013
Answered

Math.sin(Math.PI)

  • April 30, 2013
  • 1 reply
  • 1385 views

It's a circular pre-loader. When I add the "SecondHalf" the preloader doesn't work and gives an error saying the script is causing the flash player to run slowly. How can I fix this?

This code is in:  _root.first_mc._second_mc

previewImage.onLoadProgress = function(targetMC, lBytes, tBytes) {

//FirstHalf

//This works only without "SecondHalf"

          percentDone=Math.round((lBytes / tBytes) * 100);

          _root.loaderPsnt_tx.percentDisplay.text = percentDone + "%";

//SecondHalf

//This is not working

      _root.mc_mask.clear();

      _root.mc_mask.beginFill(0xff0000, 100);

      _root.mc_mask.lineStyle(1, 0xff0000, 80);

      for (i=0; i>=c; i--) {

         x = Math.sin(Math.PI/90*i)*mask_ra;

         y = Math.cos(Math.PI/90*i)*mask_ra;

         _root.mc_mask.lineTo(x, y);

       }

      _root.mc_mask.endFill();

      c = Math.round(percentDone * (-1.84));

};

previewImage.onLoadStart = function(targetMC) {

          _root.loaderPsnt_tx._visible = _root.circle._visible = _root.mc_mask._visible = true;

          _root.circle.setMask(_root.mc_mask);

          var mask_ra:Number = (_root.circle._width / 1) * -1;

          var c:Number = 0;

          var percentDone:Number = 0;

}; 

previewImage.onLoadComplete = function(targetMC) {

          _root.loaderPsnt_tx._visible = _root.circle._visible = _root.mc_mask._visible = false;

};

This topic has been closed for replies.
Correct answer kglad

Moviecliploader and listener are defined in the same frame on _root.first_mc.second_mc

var previewMCL:MovieClipLoader = new MovieClipLoader();

var previewImage:Object = {};

previewMCL.addListener(previewImage);

previewImage.onLoadProgress = function(targetMC, lBytes, tBytes) {

///doSomething

}

RefLO.onComplete = function(file:FileReference):Void {

////doSomething

          previewMCL.loadClip(imageFile,tl.targetMC);

}


mask_ra is undefined in onLoadProgress.

use:

var mask_ra:Number;

previewImage.onLoadProgress = function(targetMC, lBytes, tBytes) {

//FirstHalf

//This works only without "SecondHalf"

          percentDone=Math.round((lBytes / tBytes) * 100);

          _root.loaderPsnt_tx.percentDisplay.text = percentDone + "%";

//SecondHalf

//This is not working

      _root.mc_mask.clear();

      _root.mc_mask.beginFill(0xff0000, 100);

      _root.mc_mask.lineStyle(1, 0xff0000, 80);

  c = Math.round(percentDone * (-1.84));

      for (i=0; i>=c; i--) {

         x = Math.sin(Math.PI/90*i)*mask_ra;

         y = Math.cos(Math.PI/90*i)*mask_ra;

         _root.mc_mask.lineTo(x, y);

       }

      _root.mc_mask.endFill();

};

previewImage.onLoadStart = function(targetMC) {

          _root.loaderPsnt_tx._visible = _root.circle._visible = _root.mc_mask._visible = true;

          _root.circle.setMask(_root.mc_mask);

         mask_ra = (_root.circle._width / 1) * -1;

          var c:Number = 0;

          var percentDone:Number = 0;

}; 

previewImage.onLoadComplete = function(targetMC) {

          _root.loaderPsnt_tx._visible = _root.circle._visible = _root.mc_mask._visible = false;

};

1 reply

kglad
Community Expert
Community Expert
April 30, 2013

c isn't defined when your loadprogress first executes.

try:

previewImage.onLoadProgress = function(targetMC, lBytes, tBytes) {

//FirstHalf

//This works only without "SecondHalf"

          percentDone=Math.round((lBytes / tBytes) * 100);

          _root.loaderPsnt_tx.percentDisplay.text = percentDone + "%";

//SecondHalf

//This is not working

      _root.mc_mask.clear();

      _root.mc_mask.beginFill(0xff0000, 100);

      _root.mc_mask.lineStyle(1, 0xff0000, 80);

  c = Math.round(percentDone * (-1.84));

      for (i=0; i>=c; i--) {

         x = Math.sin(Math.PI/90*i)*mask_ra;

         y = Math.cos(Math.PI/90*i)*mask_ra;

         _root.mc_mask.lineTo(x, y);

       }

      _root.mc_mask.endFill();

   

};

previewImage.onLoadStart = function(targetMC) {

          _root.loaderPsnt_tx._visible = _root.circle._visible = _root.mc_mask._visible = true;

          _root.circle.setMask(_root.mc_mask);

          var mask_ra:Number = (_root.circle._width / 1) * -1;

          var c:Number = 0;

          var percentDone:Number = 0;

}; 

previewImage.onLoadComplete = function(targetMC) {

          _root.loaderPsnt_tx._visible = _root.circle._visible = _root.mc_mask._visible = false;

};

Inspiring
April 30, 2013

Thanks Kglad.

Got rid of the error message now but still the masking is not working as expected. Any idea why? When I use this on the root and it works but it doesn't work in _root.first_mc._second_mc?

percentDone + "%"; works though.

kglad
Community Expert
Community Expert
April 30, 2013

well, that code doesn't look like it would do anything useful.  what is it supposed to do?

create wedge-shaped mask that increases from 0 degrees to 360?