Introduction

Flash is a lightweight cross-platform runtime for rich media, enterprise applications and mobile applications, as well as an integrated development environment. Flash can be programmed in ActionScript 1/2/3.

Saturday, November 22nd, 2003 at 11:10 am

The VisibleObject and the VisibleComposite-Class

While working with these two classes I often stumbled across a few problems with them. For that reason I rewrote the whole classes though their duty is the same. I’m going to write a few useful examples that build up on this two classes. One is going to be a kind of TabBar. Till then try to play around with these classes and maybe you’ll find them useful too. If you got any suggestions please post. I’m open for everything and always wanna learn something new.

The VisibleObject-Class:

class VisibleObject{
        public var type:String = “VisibleObject“;

        public var draw:Function;
        public var clear:Function;

        private var createMatrix:Function;

        private var container_mc:MovieClip;
        private var mc:MovieClip;

        private var depth:Number;
        private var idName:String;

        private var xPosition:Number;
        private var yPosition:Number;

        public function VisibleObject(Void){
                container_mc = _root;
                depth = container_mc.getNextHighestDepth();
                idName = null;
                xPosition = 0;
                yPosition = 0;
        }
        public function create(Void):Void{
                if(idName == null){
                        mc = container_mc.createEmptyMovieClip(makeUpMCName(), depth);
                } else {
                        mc = container_mc.attachMovie(idName, makeUpMCName(), depth);
                }
                mc.master = this;
                createMatrix();
                move();
                draw();
        }
        public function remove(Void):Void{
                mc.removeMovieClip();
        }
        public function move(Void):Void{
                mc._x = xPosition;
                mc._y = yPosition;
        }

        public function set x(aXPosition:Number):Void{
                xPosition = aXPosition;
        }
        public function get x():Number{
                return xPosition;
        }
        public function set y(aYPosition:Number):Void{
                yPosition = aYPosition;
        }
        public function get y():Number{
                return yPosition;
        }

        public function setContainer(aContainer:MovieClip):Void{
                container_mc = aContainer;
                depth = container_mc.getNextHighestDepth();
        }
        public function getContainer(Void):MovieClip{
                return container_mc;
        }
        public function setIDName(anIDName:String):Void{
                idName = anIDName;
        }
        public function getIDName(Void):String{
                return idName;
        }

        private function makeUpMCName(Void):String{
                return type + “_d” + depth + “_mc“;
        }
}

The VisibleComposite-Class:

class VisibleComposite extends VisibleObject{
        public var type:String = “VisibleComposite“;

        private var children:Array;

        public function VisibleComposite(Void){
                children = new Array();
        }
        private function createMatrix(Void):Void{
                var i:Number = 0;
                while(i < children.length){
                        children[i].setContainer(mc);
                        children[i].create();
                        i++;
                }
        }
        public function draw(Void):Void{
                var i:Number = 0;
                while(i < children.length){
                        children[i].draw();
                        i++;
                }
        }
        public function clear(Void):Void{
                var i:Number = 0;
                while(i < children.length){
                        children[i].clear();
                        i++;
                }
        }
        public function addChild(aChild:VisibleObject):Number{
                children.push(aChild);
                return children.length-1;
        }
        public function removeChild(aChild:VisibleObject):Void{
                var i:Number = 0;
                while(i < children.length){
                        if(children[i] == aChild){
                                children[i].remove();
                                children.splice(i, 1);
                        }
                        i++;
                }
        }
        public function removeChildByNumber(aNumber:Number):Void{
                children[aNumber].remove();
                children.splice(aNumber, 1);
        }
        public function getChildByNumber(aNumber:Number):VisibleObject{
                return children[aNumber];
        }
}