i've amended my function to be

                        function m(evt:MouseEvent):void
                        {
                                setChildIndex(DisplayObject(evt.target), 
numChildren-1);
                        }


which works but forcing the object type seems a bit hacky to me and doesn't really teach me anything


On 27 Feb 2008, at 14:58, Allandt Bik-Elliott (Receptacle) wrote:

hi guys

i'm playing with some as3 to get my head around it and i've come across a little wierdness in the drawing api that i hope you can shed some light on

here is my script - it's an amended version of one from Essential Actionscript:

<CODE>

package com.receptacle.drawingtest
{
        import flash.display.*;
        import flash.text.TextField;
        import flash.events.MouseEvent;
        
        public class GreetingApp extends Sprite
        {
                public function GreetingApp()
                {
//var rectAndCircle:Shape = new Shape(); shape changed to sprite to support mouse event
                        var rectAndCircle:Sprite = new Sprite();
//adding multiple shapes to a single Shape() instance is akin to creating a graphic instance rectAndCircle.graphics.lineStyle(10,0x999999,1); // draw lines around all rectAndCircle objects rectAndCircle.graphics.beginFill(0x0000FF,1); // set colour on object
                        rectAndCircle.graphics.drawRect(125,0,150,75); // 
rectangle
rectAndCircle.graphics.beginFill(0xFF0000, 0.8); // change colour on object
                        rectAndCircle.graphics.drawCircle(150,100,50); // circle
                        rectAndCircle.x = 125;
                        rectAndCircle.y = 100;
                        //without this, rectAndCircle will not display
                        addChild(rectAndCircle);
                        //just for fun
                        rectAndCircle.addEventListener(MouseEvent.MOUSE_OVER,m);

                        var triangle:Sprite = new Sprite()
                        triangle.graphics.beginFill(0xFF5500,0.8);
                        triangle.graphics.moveTo(50,0);
                        triangle.graphics.lineTo(100,100);
                        triangle.graphics.lineTo(0,100);
                        triangle.graphics.lineTo(50,0);
                        triangle.graphics.endFill();
                        triangle.x = 175;
                        triangle.y = 75;
addChildAt(triangle, getChildIndex(rectAndCircle)); // puts triangle BELOW rectAndCircle
                        triangle.addEventListener(MouseEvent.MOUSE_OVER,m);
                        
                        function m(event:MouseEvent):void
                        {
setChildIndex(this, numChildren-1); //doesn't work - 'this' is scoped to the holding object
                        }
                        
                        var greeting_txt:TextField = new TextField();
                        greeting_txt.text = "hello world";
                        greeting_txt.x = 200;
                        greeting_txt.y = 300;
                        addChild(greeting_txt);
                }
        }
}

</CODE>

is what i've done possible? ie can i set a single mouseListener method (m in my example) to be used by any of the sprites to move themselves to the front of the display stack or would i have to write an explicit statement for each one?

thanks for your time
a



_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

_______________________________________________
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Reply via email to