我目前正在制作一个平台游戏,我有一堆不同的瓷砖用来形成我的地图。这些瓷砖的外观非常不同,并且相互放置,它们会产生非常明显的变化,这在视觉上并不十分吸引人。我一直试图通过以下方式解决这个问题:
我有四层,每个块两个,我正在褪色。第一层是实际图块(图形)所在的位置。第二层是面具。在掩模层中,我有一个渐变,它与其他图块遮罩层完全相反(遮罩层1向下,遮罩层2向上)。但是,我需要能够动态地改变它们,在适当的图形层中将新的渐变放置在适当的图形层中。
我一直在谷歌搜索最后一个小时左右,试图找到一种方法来定义一个新的MovieClip被放置在哪一层,但我找到的只是setChildIndex,因为一层充当了一个掩码,我不能用。在Actionscript中是否有这样的功能,或者我是手工制作瓷砖的所有组合?
感谢您的帮助, -Birjolaxew
答案 0 :(得分:1)
尝试使用类似这样的内容:
package
{
import flash.display.Sprite;
public class LayeredContainer extends Sprite
{
// vars
private var _layers:Array = [];
/**
* Constructor
*/
public function LayeredContainer()
{
createLayer("_fallback_");
}
/**
* Defines the layers to use
* @param ...layers A list of layers to add
*/
public function createLayers(...layers):void
{
var i:String;
for each(i in layers)
createLayer(i);
}
/**
* Creates a single layer, adding it to the top of the display list
* @param id The layer id
*/
public function createLayer(id:String):Sprite
{
var l:Sprite = new Sprite();
_layers[id] = l;
addChild(l);
return l;
}
/**
* Returns a layer based on id
* @param id The layer to return
*/
public function layer(id:String):Sprite
{
return _layers[id] || layer("_fallback_");
}
}
}
然后你可以创建你的图层并添加如下内容:
var lc:LayeredContainer = new LayeredContainer();
lc.createLayers("tiles", "whatever", "mask");
addChild(lc);
lc.layer("tiles").addChild(_some_tile_you_made_);