为循环分配动态掩码的问题

时间:2011-05-18 01:19:55

标签: actionscript-3

我正在通过XML加载8个缩略图,放入一个精灵,并用辅助网格类将它们隔开。这部分有效。什么不起作用是当我尝试为每个这些(使用我制作的simpleRectangle类)分配一个蒙版时,我似乎只是为最后一个图像指定了一个蒙版。我对'imageLoader.mask = _mask;'做错了吗? ?

我在这里的最终努力是点击缩略图并为蒙版设置动画以显示整个拇指。

我嵌套了showPictures函数,因此它可以引用蒙版,这不是最佳的,所以如果有人能帮助我看到更好的方法来做到这一点,我真的很感激。

public class MiniGallery extends Sprite
{
        //create($columns:int, $rows:int, $xSpacing:int, $ySpacing:int, $xPadding:int, $yPadding:int)

        private var imagePoints:Array = grid.create(8, 1, 100, 0, 10.5, 15);
        private var fadeTween:*
        private var imageText:TextField = new TextField();
        private var imageLoader:Loader;                                 
        private var xml:XML;                                                
        private var xmlList:XMLList;                                    
        private var xmlLoader:URLLoader 
        private var i:int
        private var _mask:SimpleRectangle;
        private var _sprite:Sprite;



    public function MiniGallery()
    {
        flash.system.Security.allowDomain("*")  
        var xmlLoader:URLLoader = new URLLoader();              
        xmlLoader.load (new URLRequest("data/images.xml")); 
        xmlLoader.addEventListener (Event.COMPLETE, xmlLoaded); 

    }

        private function xmlLoaded (event:Event):void                   
        {
            xml = XML(event.target.data);                       
            xmlList = xml.children();                           
                trace('xmlList is: ' + xmlList)
            for (i = 0; i < xmlList.length(); i++)      
            {
                imageLoader = new Loader();
                imageLoader.load (new URLRequest(xmlList[i].attribute("thumb")));   
                createBoxes ();
            }
        }


            private function createBoxes ():void
            {
                for (var j:int = 0; j < 1; j++)

                {

                    imageLoader.addEventListener(MouseEvent.CLICK, showPicture) 
                    imageLoader.x = imagePoints[i].x;                   
                    imageLoader.y = imagePoints[i].y - 36;
                    _mask = new SimpleRectangle(88,50, 0x000000, 0x000000, 0, 1);
                    _mask.name = xmlList[i].toString();
                    imageLoader.name = xmlList[i].attribute("source");
                    trace('imageLoader name is ' + imageLoader.name)
                    _mask.x = imagePoints[i].x
                    _mask.y = imagePoints[i].y
                    imageLoader.mask = _mask;
                    trace('mask name is ' + _mask.name)
                    addChild (imageLoader);
                    _sprite = new Sprite
                    _sprite.addChild(imageLoader)
                    addChild(_sprite)
                    _sprite.addChild(_mask)


                }


        function showPicture (event:MouseEvent):void
        { 


            TweenLite.to(_mask, 3, {scaleY:-40, ease:Quad.easeOut});





        }

    }


}

这正确地描述了XmlList哪个stackOverflow不会显示,并且:

xmlList是:

<image source="m1" thumb="thumbnails/dj051.jpg">mask1</image>
<image source="m2" thumb="thumbnails/dj052.jpg">mask2</image>
<image source="m3" thumb="thumbnails/dj053.jpg">mask3</image>
<image source="m4" thumb="thumbnails/dj054.jpg">mask4</image>
<image source="m5" thumb="thumbnails/dj055.jpg">mask5</image>
<image source="m6" thumb="thumbnails/dj056.jpg">mask6</image>
<image source="m7" thumb="thumbnails/dj057.jpg">mask7</image>
<image source="m8" thumb="thumbnails/dj058.jpg">mask8</image>

imageLoader名称是m1 掩码名称是mask1 imageLoader名称是m2 掩码名称是mask2 imageLoader名称是m3 掩码名称是mask3 imageLoader名称是m4 掩码名称是mask4 imageLoader名称是m5 掩码名称是mask5 imageLoader名称是m6 掩码名称是mask6 imageLoader名称是m7 掩码名称是mask7 imageLoader名称是m8 掩码名称是mask8

1 个答案:

答案 0 :(得分:0)

我认为您应该将所需的所有蒙版的所有矩形绘制到一个Sprite或形状的一个图形上下文中,并将其作为蒙版附加到Display对象上。精灵只能有一个掩码。