Используя этот
https://developer.apple.com/reference/spritekit/skcropnode
и
https://www.hackingwithswift.com/read/14/2/getting-up-and-running-skcropnode
«что-нибудь в цветной часть будет видна, все в прозрачной части будет invis кий «.
У меня есть мой первый успех. Очевидно, мне нужно поработать над позиционированием.
var taMain = SKTexture(imageNamed: "landscape144.jpg")
var sprite1 = SKSpriteNode()
sprite1 = SKSpriteNode(texture: taMain)
sprite1.xScale = 2
sprite1.yScale = 2
sprite1.zPosition = 1
var cropNode:SKCropNode = SKCropNode()
cropNode.xScale = 1
cropNode.yScale = 1
cropNode.position = CGPoint(x: 0, y: 0)
cropNode.zPosition = 2
cropNode.maskNode = SKSpriteNode(imageNamed: "maskimage3.png")
cropNode.maskNode?.position = CGPoint(x: 0, y: 0)
cropNode.addChild(sprite1)
self.addChild(cropNode)
и во время touchesbegan
for touch: AnyObject in touches {
//uncomment 2 lines to help you get your image positioned on screen.
// it moves the whole cut image + hole
//let location = touch.locationInNode(self)
// cropNode.position = location
//Or uncomment these 2 lines to move just the mask
//let location = touch.locationInNode(cropNode)
// cropNode.maskNode?.position = location //moves just the hole
}
Во время touchesbegan вы можете раскомментировать строку «cropNode.position = место», если вы хотите, чтобы переместить изображение и отверстие вместе и выяснить, хорошее место для это на экране. Или вы можете раскомментировать «cropNode.maskNode? .position = location», если вы хотите переместить отверстие.
Перемещение дыры работает только в том случае, если у вашего макияжа достаточно, чтобы покрыть все ваше изображение, из которого вы вырезаете. В противном случае вы теряете больше своего изображения, чем планировали. Таким образом, для моих целей я, вероятно, в конечном итоге сделаю изображение и маскирующие изображения, которые имеют точно такую же высоту/ширину. Затем, в зависимости от того, что мне нужно, я загружу различные маскирующие элементы.
Мои изображения:
маска с прозрачным отверстием 144 на 144 пикселей
Пейзаж 144 на 144 пикселей
Результаты в iphone 6 тренажере - Xcode 6,2
маска большего размера с прозрачным отверстием
Вы должны использовать SKCropNode, если вы читаете комментарии на тот, который вы опубликовали, вы можете видеть, что автор делает это – Knight0fDragon
Хорошо. Я попробую skcropnode на основе этого ref: https://developer.apple.com/reference/spritekit/skcropnode – Neo42
да, то, что вы делаете, на самом деле является инверсией этой ссылки, в которой находится .Subtract. I не помню 100%, так как это было некоторое время с тех пор, как я это сделал, но я не думаю. Subtract смешивает альфа-канал, поэтому вам, возможно, придется делать настраиваемый зеленый – Knight0fDragon