Posts Tagged ‘with’

AS3 “with” keyword and casting

Monday, July 12th, 2010

I’ve rarely (if ever) used the “with” keyword in as3, but I recently found a neat trick to use it with.

When I quickly need to cast an object to access a few methods/properties I don’t always want to
create a new casted variable:

var child:DisplayObject = getChildThatMightBeMovieClip();
 
if (child is MovieClip) {
    var childAsMc:MovieClip = child as MovieClip;
    trace(childAsMc.numChildren);
    trace(childAsMc.currentFrame);
}

or cast it every single time:

var child:DisplayObject = getChildThatMightBeMovieClip();
 
if (child is MovieClip) {
    trace((child as MovieClip).numChildren);
    trace((child as MovieClip).currentFrame);
}

Using the “with” keyword, we can temporarily cast it without creating a temporary casted variable or casting it again and again:

var child:DisplayObject = getChildThatMightBeMovieClip();
 
if (child is MovieClip) {
    with (child as MovieClip) {
        trace(numChildren);
        trace(currentFrame);
    }
}

Elegant =)