我试图将图像掩盖在另一个图像上,以便我只通过蒙版图像查看未屏蔽图像的特定部分。我的问题是我在屏幕上看不到任何东西..没有图像,根本没有效果
cardMask = new Image(Root.assets.getTexture("card_mask"));
cardMask.y = Constants.STAGE_HEIGHT*0.40;
cardMask.x = Constants.STAGE_WIDTH *0.48;
trace("it's add mask");
cardLight = new Image(Root.assets.getTexture("card_light_mask"));
cardLight.y = Constants.STAGE_HEIGHT*0.46;
cardLight.x = Constants.STAGE_WIDTH *0.48;
cardLight.mask=cardMask;
maskedDisplayObject = new PixelMaskDisplayObject(-1,false);
maskedDisplayObject.addChild(cardLight);
maskedDisplayObject.x=cardLight.x;
maskedDisplayObject.y=cardLight.y;
maskedDisplayObject.mask=cardMask;
maskedDisplayObject.blendMode = BlendMode.SCREEN;
addChild(maskedDisplayObject);
答案 0 :(得分:0)
首先,为了屏蔽对象,还应将mask
对象添加到显示列表中。您的代码不会在任何地方添加cardMask
到显示列表。其次,如果您的maskedDisplayObject
应始终可见,则应将面具分配给它,而不是指定显示您想要控制的部分的其他对象。第三,this.stage
也可能为空,因此整个树(this -> maskedDisplayObject -> cardLight
)都不会呈现。您需要检查所有这三个条件才能显示某些内容。
此外,如果您希望cardLight
作为对象独立于maskedDisplayObject
移动,则应将其添加到this
,并检查它是否显示在maskedDisplayObject
之上}(在addChild(cardLight)
之后调用addChild(maskedDisplayObject)
。
此代码的所有总计:
trace("Stage is null:", (this.stage==null)); // if this outputs true, you're out of display
cardMask = new Image(Root.assets.getTexture("card_mask"));
cardMask.y = Constants.STAGE_HEIGHT*0.40;
cardMask.x = Constants.STAGE_WIDTH *0.48; // mask creation unaltered
trace("it's add mask");
cardLight = new Image(Root.assets.getTexture("card_light_mask"));
cardLight.y = Constants.STAGE_HEIGHT*0.46;
cardLight.x = Constants.STAGE_WIDTH *0.48;
cardLight.mask=cardMask; // this is right
maskedDisplayObject = new PixelMaskDisplayObject(-1,false);
// maskedDisplayObject.addChild(cardLight); this is moved to main part of display list
maskedDisplayObject.x=cardLight.x;
maskedDisplayObject.y=cardLight.y;
// maskedDisplayObject.mask=cardMask; NO masking of this, you're only masking cardLight
cardLight.blendMode = BlendMode.SCREEN; // display mode is also changed
addChild(maskedDisplayObject);
addChild(cardLight);