1. Calling namespaced Javascript from Flash with ExternalInterface…

    Posted on: January 28, 2011

    Edit: This just seemed to eventually start working for me out nowhere. I hate when that happens. If you’re having the same problem I recommend you go have a beer and come back to it later.

    This is pissing me off. I have some Javascript that looks like this:

    var boz = {
          thing: function(val) { alert(val); }
    }

    I want to call it from Flash using ExternalInterface like this:

    ExternalInterface.call("boz.thing", "what the shit!?");

    …but that doesn’t work.

    Somebody asked about this on StackOverflow (here) and in the accepted answer the guy says the code is basically just eval’d so it’ll work just fine. He has an example like this:

    ExternalInterface.call("function (foo) { alert(foo); return true; }","test");

    That doesn’t work either. I can only seem to get it to work with global function calls. Am I missing something? There certainly doesn’t seem to any examples of calling namespaced Javascript from Flash out there.

    I’ll post back if I find out what’s going on.

    Piece.


  2. Flash 10 + ExternalInterface + FileReference

    Posted on: September 28, 2010

    If you try to call a function within Flash from Javascript and that function has the intention of calling a FileReferenceList.browse() it’s not going to work. It’s a security thing. You need to use an in-movie button. Even if you have the JS call a function which calls another function that calls FileReferenceList.browse() it’s still not going to let you do it. I wasted some time figuring this out. Just give up.

    This guy had the same issue: http://kevinmusselman.com/blog/2009/01/multiple-file-upload-using-flash/


  3. Flash 9: Text fields and buttons don’t show up in browser

    Posted on: October 1, 2008

    Problem:

    You publish your SWF from the Flash CS3 IDE and everything looks fine. You, or someone else checks out the SWF in a browser and although everything kind of works, certain elements like text fields and component buttons aren’t rendering properly!

    Solution:

    Sometimes certain revisions of the Flash 9 player behave differently than expected, but there is a way you can look into it. Read on…
    (more…)

  4. Save images from Flash to your server using ASP.NET webservices

    Posted on: September 11, 2008

    Problem:

    You want to save an image from Flash to a server using Actionscript 3.0 and ASP.NET.

    Solution:

    Read this article!
    (more…)

  5. Actionscript 3.0: Scale Object from Center Point

    Posted on: July 31, 2008

    Note: This is almost exactly the same solution I posted earlier for rotating an object around its center point (Actionscript 3.0: Rotate Around Center Point). I thought I’d post this slightly altered solution for people who need it.

    Problem:

    You need to scale a movieclip/sprite from its center point, but its registration point is at (0,0) and you can’t and/or don’t feel like putting this object in the center of a container movieclip and rotating that

    Solution:

    TCBWMO (Take care of business with the matrix object).
    (more…)

  6. Flash/Actionscript: Innaccurate math results

    Posted on: July 21, 2008

    Problem:

    You’re working some math equations with Actionscript and tracing the results when you notice some results are off by a very small value.
    output:
    2
    2.1
    2.2
    2.3
    2.4
    2.5000000001
    2.6
    2.7000000001
    2.8
    2.9
    3
    

    Solution:

    This is called a floating point error and is apparently a normal computing error that affects all aspects of computing, not just flash. You can fix this by running the values through the correctFloatingPointError function I’ve posted below.
    (more…)

  7. Actionscript 3.0: Rotate Around Center Point

    Posted on:

    Problem:

    You need to rotate a movieclip/sprite around it’s center point, but its registration point is at (0,0) and you can’t and/or don’t feel like putting this object in the center of a container movieclip and rotating that.

    Solution:

    Use the transform matrix and show it who’s boss.

    If you want to get this done simply and quickly, you can use this rotateAroundCenter function:

     private function rotateAroundCenter (ob:*, angleDegrees:Number, ptRotationPoint:Point) {
          var m:Matrix=ob.transform.matrix;
          m.tx -= ptRotationPoint.x;
          m.ty -= ptRotationPoint.y;
          m.rotate (angleDegrees*(Math.PI/180));
          m.tx += ptRotationPoint.x;
          m.ty += ptRotationPoint.y;
          ob.transform.matrix=m;
     }
    (more…)

  8. Actionscript 3: Event.target returns children of movieclip

    Posted on: June 11, 2008

    Problem:

    You’ve added a listener to a movieclip, but the target returned is another movieclip or sprite within that movieclip.

    Solution:

    myMovieclip.mouseChildren = false;
    (more…)

  9. Resizing bitmap images with Actionscript 3.0

    Posted on: June 3, 2008

    Hey, I just did a quick experiment with bitmaps in AS3. Nothing fancy, I just loaded in an external JPEG, resized it into 3 different sizes and then drew them to stage. I’m sure someone can use this. For now, everything is hard-coded and the code is right in the .FLA. Maybe I’ll try and make a nice class out of this, although I’m sure there’s already one out there. Anyway, check out the code or download the FLA.

    var mediaLoader:Loader = new Loader();
    var bmFullsize:Bitmap;
    var bmHalfsize:Bitmap;
    var bmThumbsize:Bitmap;
     
    mediaLoader.load(new URLRequest("ostrich.jpg"));
    mediaLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, resizeImages);
     
    function resizeImages(e:Event):void
    {
    	bmFullsize = new Bitmap(e.target.content.bitmapData.clone());
    	bmHalfsize = new Bitmap(e.target.content.bitmapData.clone());
    	bmThumbsize = new Bitmap(e.target.content.bitmapData.clone());
    	bmFullsize.width = 300;
    	bmFullsize.height = 300;
    	bmFullsize.smoothing = true;
    	bmHalfsize.width = 150;
    	bmHalfsize.height = 150;
    	bmHalfsize.x = bmFullsize.width;
    	bmHalfsize.smoothing = true;
    	bmThumbsize.width = 75;
    	bmThumbsize.height = 75;
    	bmThumbsize.x = (bmFullsize.width + bmHalfsize.width);
    	bmThumbsize.smoothing = true;
    	showImages();
    }
     
    function showImages():void
    {
    	addChild(bmFullsize);
    	addChild(bmHalfsize);
    	addChild(bmThumbsize);
    }

  10. APE Class Model

    Posted on: May 29, 2008

    Click above for a giant layout of all the APE classes and the way they inherit each other. Definitely helpful.