Проблема назначения динамических масок для цикла - PullRequest
0 голосов
/ 18 мая 2011

Я загружаю 8 миниатюр через XML, помещаю их в спрайт и размечаю их с помощью вспомогательного класса сетки.Эта часть работает.Что не работает, так это когда я пытаюсь назначить маску каждому из них (используя созданный мной класс simpleRectangle), я, кажется, назначаю маску только последнему изображению.Я делаю что-то не так с 'imageLoader.mask = _mask;'?

Моя главная цель - щелкнуть по миниатюре и анимировать маску, чтобы показать весь большой палец.

Я вложил функцию showPictures, чтобы она могла иметь ссылку на маски, что не является оптимальным.Так что, если кто-нибудь может помочь мне увидеть лучший способ сделать это, я бы очень признателен.

package

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 nameэто имя маски m1 это маска1 имя imageLoader это имя маски m2 это маска2 имя загрузчика image2 это имя маски m3 это маска3 имя загрузчика image4 это имя маски m4 это маска4 имя загрузчика изображений m5 имя маски это маска5 imageLoader имя m6 имя маски это маска6 имя загрузчика изображений m7Имя маски - маска7 Имя загрузчика изображений - m8 Имя маски - маска8

1 Ответ

0 голосов
/ 18 мая 2011

Я думаю, вы должны нарисовать все прямоугольники всех необходимых вам масок в одном графическом контексте одного спрайта или фигуры и прикрепить его к экранному объекту как маску.У спрайта может быть только одна маска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...