我有一个简单的场景,其中添加了一些元素。
现在我希望专注于一个带有蒙版的特定元素,并在与我想要关注的元素相同的位置剪切整体。非常类似于我们在某些游戏首次展示某种教程时可以看到的内容。
基本上我正在使用alpha=0.7
添加全屏图层(因此用户仍然会看到所有内容),但随后在特定位置添加一个圆圈作为此图层子项并设置blendMode=
。减去所以它从这个全屏图层“切出”一个圆圈,所以在这个圆圈内你有一个清晰的视图。
将所有元素添加到屏幕上后,我有以下代码。
// before this code i added some basic elements like circles and backgrounds
let mask = SKSpriteNode(color: .blackColor(), size: self._screenSize)
mask.anchorPoint = CGPoint.zero
mask.position = CGPoint.zero
mask.zPosition = 100
mask.alpha = 0.7
let circle = SKShapeNode(circleOfRadius: Constants.Config.playersize*2)
circle.fillColor = .blackColor()
circle.lineWidth = 0
let circle_mask = SKSpriteNode(texture: SKView().textureFromNode(circle, crop: circle.frame))
circle_mask.blendMode = .Subtract
circle_mask.zPosition = 101
// now show the layer with alpha=0.7 and the circle mask being at the same position as my player element i want to focus on
mask.addChild(circle_mask)
circle_mask.position = player.position
self.addChild(mask)
但这只是添加了全屏图层,没有圆孔。看起来它忽略了circle_mask节点。我做错了什么?
我的计划是继续移动圆形遮罩以专注于此场景中的其他元素。我认为。减去它应该仅从其父节点中减去,父节点是alpa=0.7
的全屏图层,对吗?
我刚试过SKCropNode。将全屏图层作为子项添加到裁剪节点中,然后将圆圈指定为蒙版。但现在它几乎切掉了所有东西,只是显示了我的全屏图层的一个圆圈,我实际上需要这个裁剪节点的倒置结果。
blendMode的问题是在最终的帧缓冲区运行它,但我需要的是仅在父节点上运行它,因此在使用时不会切断节点后面的所有内容.Subtract
答案 0 :(得分:3)
以下是如何创建一个带有打孔孔的半透明层的示例:
- (注意:.subtract混合模式不考虑精灵的alpha,因此你需要使用裁剪节点)
app.post('/signup', function(request, response){
console.log(request.body.email);
console.log(request.body.password);
User
.find({ where: { name: request.body.email } })
.then(function(err, user) {
if (!user) {
console.log('No user has been found.');
User.create({ name: request.body.email }).then(function(user) {
// you can now access the newly created task via the variable task
console.log('success');
}).catch(function(error) {
console.log(error);
});
}
});
});