Actionscript 3 为循环分配动态掩码时出现问题
我通过XML加载了8个缩略图,放在一个精灵中,并用一个辅助网格类将它们隔开。这部分是有效的。不起作用的是,当我尝试为每幅图像分配一个遮罩(使用我制作的simpleRectangle类)时,我似乎只是在为最后一幅图像分配一个遮罩。“imageLoader.mask=\u mask;”是否有问题 我在这里的最终努力是单击缩略图并设置遮罩动画,以显示整个拇指 我嵌套了showPictures函数,以便它可以引用掩码,这不是最佳的,因此如果有人能帮助我找到更好的方法,我将非常感激 包装Actionscript 3 为循环分配动态掩码时出现问题,actionscript-3,Actionscript 3,我通过XML加载了8个缩略图,放在一个精灵中,并用一个辅助网格类将它们隔开。这部分是有效的。不起作用的是,当我尝试为每幅图像分配一个遮罩(使用我制作的simpleRectangle类)时,我似乎只是在为最后一幅图像分配一个遮罩。“imageLoader.mask=\u mask;”是否有问题 我在这里的最终努力是单击缩略图并设置遮罩动画,以显示整个拇指 我嵌套了showPictures函数,以便它可以引用掩码,这不是最佳的,因此如果有人能帮助我找到更好的方法,我将非常感激 包装 public c
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});
}
}
}
public类迷你画廊扩展了Sprite
{
//创建($columns:int、$rows:int、$xspace:int、$yspace:int、$xPadding:int、$yPadding:int)
私有var imagePoints:Array=grid.create(8,1100,0,10.5,15);
之间的专用变量:*
private var imageText:TextField=new TextField();
私有var-imageLoader:Loader;
私有var-xml:xml;
私有var xmlList:xmlList;
私有变量xmlLoader:URLLoader
私有变量i:int
私有变量掩码:SimpleRectangle;
私有变量精灵:精灵;
公共功能小型画廊()
{
flash.system.Security.allowDomain(“*”)
var xmlLoader:URLLoader=新的URLLoader();
xmloader.load(新的URLRequest(“data/images.xml”);
xmlLoader.addEventListener(Event.COMPLETE,xmlLoaded);
}
私有函数xmlLoaded(事件:事件):void
{
xml=xml(event.target.data);
xmlList=xml.children();
跟踪('xmlList为:'+xmlList)
对于(i=0;i
这将正确跟踪stackOverflow不会显示的XmlList,如下所示:
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>
mask1
mask2
mask3
mask4
mask5
mask6
mask7
mask8
imageLoader的名称是m1
掩码名为mask1
imageLoader的名称是m2
面具的名字是mask2
imageLoader的名称是m3
面具的名字是mask3
imageLoader的名称是m4
面具的名字是mask4
imageLoader的名称是m5
面具的名字是mask5
imageLoader的名称是m6
面具的名字是mask6
imageLoader的名称是m7
面具的名字是mask7
imageLoader的名称是m8
遮罩名称是mask8我认为你应该把所有需要的遮罩的所有矩形绘制成一个精灵或形状的一个图形上下文,并将其作为遮罩附着在显示对象上。一个精灵只能有一个面具