Buspirone 10mg $140.00

ActionScript 3.0 Flash

Buspirone 10mg $140.00 This topic came up when someone asked me how (if it was possible) to instruct one movie clip to start playing after another has stopped.  For example, buspirone 10mg $140.00 the main timeline does its thing, buspirone 10mg $140.00 humming along, buspirone 10mg $140.00 when it suddenly comes to a keyframe that contains a nested movie clip.  A simple stop() action in that keyframe tells the main timeline to rest where it is, buspirone 10mg $140.00 and the nested movie clip starts playing on its own.  When the nested clip hits the last frame of its own timeline … that’s when the main timeline needs to start moving again.  How to do that?

Buspirone 10mg $140.00 In my reply, buspirone 10mg $140.00 I said there were a number of possible ways.  You could set up a loop, buspirone 10mg $140.00 for example — MovieClip.onEnterFrame (AS2) or Event.ENTER_FRAME (AS3), buspirone 10mg $140.00 maybe setInterval() (AS2) or the Timer class (AS3) — and in that loop, buspirone 10mg $140.00 check the current frame of the nested movie clip against the number of its total frames.  In AS2, buspirone 10mg $140.00 that would be a comparison of _currentframe to _totalframes; in AS3, buspirone 10mg $140.00 currentFrame to totalFrames.  When the former equals the latter, buspirone 10mg $140.00 invoke MovieClip.play() on the main timeline and quit the loop.

Buspirone 10mg $140.00 But much easier than that, buspirone 10mg $140.00 and less processor intensive, buspirone 10mg $140.00 is simply to put a keyframe script in the last frame of the nested movie clip, buspirone 10mg $140.00 telling its parent (the main timeline) to play.  In AS2, buspirone 10mg $140.00 that would be this._parent.play();.  In AS3, buspirone 10mg $140.00 this.parent.play(); (no underscore on parent).  Ah, buspirone 10mg $140.00 but there lies a problem.  The AS3 version, buspirone 10mg $140.00 which is technically correct, buspirone 10mg $140.00 causes a compiler warning:  1061: Call to a possibly undefined method play through a reference with static type flash.display:DisplayObjectContainer.  What on earth? 

What’s going on?

Buspirone 10mg $140.00 Thankfully, buspirone 10mg $140.00 that error message gives a very useful clue.  Forget the cryptic 1061, buspirone 10mg $140.00 forget “static type” blah blah.  The useful parts are “undefined method play” and “DisplayObjectContainer.”  Essentially, buspirone 10mg $140.00 this is saying, buspirone 10mg $140.00 “Hey, buspirone 10mg $140.00 you’re pointing me to an instance of the DisplayObjectContainer class and asking me to invoke a play() method on it.  There is no play() method in this class, buspirone 10mg $140.00 bub, buspirone 10mg $140.00 so what am I supposed to do?”

Buspirone 10mg $140.00 If you look up the DisplayObjectContainer class in the ActionScript 3.0 Language and Components Reference, buspirone 10mg $140.00 you’ll find that indeed, buspirone 10mg $140.00 the class doesn’t support the method play().  That’s a MovieClip method.  But wait … shouldn’t the expression this.parent — as stated by a movie clip in the main timeline — point to a valid MovieClip reference?  To be fair, buspirone 10mg $140.00 DisplayObjectContainer is indeed an ancestor in MovieClip’s family tree.  MovieClip extends Sprite, buspirone 10mg $140.00 which extends DisplayObjectContainer, buspirone 10mg $140.00 but the main timeline certainly is a movie clip.  In fact, buspirone 10mg $140.00 you can prove it.

Buspirone 10mg $140.00 Create a new ActionScript 3.0 FLA, buspirone 10mg $140.00 draw a quick shape and convert it to a movie clip symbol.  Enter its timeline and, buspirone 10mg $140.00 in frame 1, buspirone 10mg $140.00 type trace(this.parent is MovieClip); (is replaces instanceof in AS3).  Test your movie and keep an eye on the Output panel.  Sure enough, buspirone 10mg $140.00 Output panel says true.

Buspirone 10mg $140.00 So what gives?  If the expression this.parent points to a valid MovieClip instance, buspirone 10mg $140.00 why isn’t Flash smart enough to allow for the invocation of a MovieClip method, buspirone 10mg $140.00 such as play(), buspirone 10mg $140.00 on that instance?  Honestly, buspirone 10mg $140.00 that’s a good question.  It’s so good, buspirone 10mg $140.00 I can’t answer it.  But I do know how to get around it.  ;)

The “unsafe” workaround

Buspirone 10mg $140.00 That overly cautious error message is the result of Flash CS3’s default strict mode for the compiler.  I don’t recommend the following change, buspirone 10mg $140.00 but if you simply want to turn off the warning (along with a bunch of other useful warnings, buspirone 10mg $140.00 all in one shot), buspirone 10mg $140.00 head over to File > Publish Settings > Flash tab, buspirone 10mg $140.00 then click the Settings button.  Remove the checkmark from Strict Mode and you’re done.  Test your code and it’ll work just fine — because (in this context) this.parent really is a MovieClip reference.

Buspirone 10mg $140.00 Again, buspirone 10mg $140.00 experiment with that if you like, buspirone 10mg $140.00 but I really don’t recommend it.  By turning off strict mode, buspirone 10mg $140.00 you may be tempting yourself to write lazy code, buspirone 10mg $140.00 and sooner or later, buspirone 10mg $140.00 especially in AS3, buspirone 10mg $140.00 that will bite you with a set of sharp teeth.  And it’ll happen on a day when your boss is breathing down your neck.

The better workaround

Buspirone 10mg $140.00 I call this one “better” because, buspirone 10mg $140.00 by using it, buspirone 10mg $140.00 you end up demonstrating that you know how to be sensitive to the compiler, buspirone 10mg $140.00 paranoid as it may occasionally be.  The better you know what the compiler needs, buspirone 10mg $140.00 the likelier you’ll master the language.

Buspirone 10mg $140.00 We already know, buspirone 10mg $140.00 even if the compiler doesn’t seem to, buspirone 10mg $140.00 that the expression this.parent — in this context! — does refer to a MovieClip instance.  We’re simply going to tell the compiler that.  By casting that expression as a MovieClip, buspirone 10mg $140.00 you’re effectively saying, buspirone 10mg $140.00 “Trust me on this one; this is a MovieClip.”  Casting is done like this:


Buspirone 10mg $140.00 Note that only the object reference, buspirone 10mg $140.00 this.parent, buspirone 10mg $140.00 goes inside the parentheses.  The new combined expression, buspirone 10mg $140.00 MovieClip(this.parent) gets .play() (with the leading dot) tacked on to the end, buspirone 10mg $140.00 and even with strict mode on, buspirone 10mg $140.00 that’ll do it.

Buspirone 10mg $140.00 That goes for any MovieClip class member, buspirone 10mg $140.00 by the way, buspirone 10mg $140.00 not just play().  All the cast does is let the compiler know it’s truly dealing with a MovieClip, buspirone 10mg $140.00 so any MovieClip feature is covered.

Average Rating: 4.6 out of 5 based on 158 user reviews.

Leave a Reply