我在flash中制作一个拼图游戏。但我有一个奇怪的错误。有25件,5x5。我在背景中将bitmapData传递给创建它们的片段。
对于每件作品,我创建了一个拼图形状的蒙版位图。
所以每个部分都包含一个位图,其bitmapdata是拼图纹理。每件都有一个面膜。
当我只是展示面具时,所有25件被吸引到舞台上。
但是当我使用片状面具遮盖纹理时,我似乎对应用了蒙版的22件有一个硬限制。如果我使用25个peices甚至80或100,就会发生这种情况。每次只创建 last 22个部分将显示纹理。
有什么想法吗?
如已请求,显示一些代码。
public class PuzzlePiece extends Sprite
{
private var maskBitmap:Bitmap;
private var _texture:BitmapData
private var bg:Bitmap;
private static var COUNT:uint
public function PuzzlePiece()
{
PuzzlePiece.COUNT ++;
trace("new Piece Made", PuzzlePiece.COUNT);
filters = [new GlowFilter(0x000000, 1, 16, 16, 1, 3, true), new BevelFilter(4, 45, 0xFFFFFF, 0.75, 0, 0.75, 4, 4, 1, 3, "inner", false)];
bg = new Bitmap();
addChild(bg);
this.mouseChildren = false;
this.buttonMode = true;
addEventListener(MouseEvent.ROLL_OVER, onRollOver);
addEventListener(MouseEvent.ROLL_OUT, onRollOut);
}
private function onRollOver(e:MouseEvent):void
{
TweenMax.to(this, 0.5, { colorTransform: { tint:0xff0000, tintAmount:0.5 }} );
}
private function onRollOut(e:MouseEvent):void
{
TweenMax.to(this, 0.5, { removeTint:true } );
}
/**
* called before set texture
*/
public function setmask(b:Bitmap):void {
addChild(b);
maskBitmap = b;
this.cacheAsBitmap = true;
b.cacheAsBitmap = true;
this.mask = b;
trace("piece -> Set Mask", PuzzlePiece.COUNT);
}
public function get texture():BitmapData
{
return _texture;
}
public function set texture(value:BitmapData):void
{
_texture = value;
bg.bitmapData = _texture;
trace("piece -> Set Texture", PuzzlePiece.COUNT);
}
}
}
父类创建其中一个并传入Bitmap以用作遮罩,并将bitmapdata设置为用作纹理。
答案 0 :(得分:0)
当位图屏蔽另一个位图时,命中区域包含透明区域的原因是位图是方形或矩形而不管其内容示例:如果你有一个包含蓝色圆圈的png文件,则位图/ png图像仍然是一个正方形,但圆的外部只是透明的,但仍然弥补了位图的大小
由于我没有你的完整代码,我认为它的闪存删除了你的一些图像,垃圾收集iv有这个问题大量的时间与嵌套的电影剪辑。
注意:你不能在面具中戴面具:
希望这会有所帮助