屏蔽图像不显示在AS3中
问题描述:
我想屏蔽另一个图像,以便通过屏蔽的图像查看未屏蔽图像的特定部分。我的问题是,我什么都看不到屏幕上的..没有图片,没有任何影响屏蔽图像不显示在AS3中
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);
答
首先,掩盖mask
对象也应加入到显示列表中的对象。您的代码不会添加cardMask
以在任何地方显示列表。其次,如果您的maskedDisplayObject
应始终可见,则不应将遮罩分配给它,而是分配给您希望控制显示部分的其他对象。第三,this.stage
也可能为空,因此整个树(this -> maskedDisplayObject -> cardLight
)不会呈现。你需要检查所有这三个条件才能显示出来。
另外,如果你的愿望cardLight
为对象,以独立的maskedDisplayObject
移动,你应该把它添加到this
代替,并检查它显示的maskedDisplayObject
顶部(称之为addChild(maskedDisplayObject)
后addChild(cardLight)
)。
这所有总量这段代码:
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);
请解释一下你的愿望。显然,'maskedDisplayObject'应该始终可见,'cardLightMask'应该是一个被“看透”的图像。对?另外,请确保没有显示对象用于遮盖多个对象[masking](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#mask)明确指出分配给掩蔽多个对象的一个显示对象将只掩盖最后一个。同时检查提供的代码是什么,this.stage不是null。 – Vesper
是的,maskedDisplayObject应该始终可见,但事实并非如此。屏幕上没有显示任何内容.. – Amna