Я загружаю 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