swift - pueden - no puedo compartir publicaciones en mi pagina de facebook
Cómo arreglar el botón Compartir en SpriteKit Swift cuando los jugadores vuelvan a jugar el juego Compartir botón aparece en la escena del juego? (2)
Como se dijo, debe intentar no usar UIKit ya que es para aplicaciones UIKit y no necesariamente juegos.
Puedes usar mi clase JKButtonNode para crear botones. El archivo de clase está aquí . Y la mejor parte es que son totalmente compatibles con SpriteKit porque están hechos de una SKTexture y un SKLabelNode.
Primero, crea el botón en el nivel superior de tu clase.
var shareButton: JKButtonNode?
Luego, en su didMoveToView o donde sea que haya configurado su botón. (Excepto que el método init como llamar a una función de la clase misma antes de inicializarse no funcionará) ingrese lo siguiente.
let shareButtonBackground = SKShapeNode(rect: CGRect(x: 0, y: 0, width: view.frame.size.width / 3, height: 60))
shareButton = JKButtonNode(title: "Share", background: SKView().textureFromNode(shareButtonBackground)!, action: shareButtonAction)
shareButton?.title.fontColor = UIColor.whiteColor()
shareButton?.canChangeState = false
shareButton?.canPlaySounds = false
addChild(shareButton!)
Y obtendrá un error ya que no declaró la acción del botón, sino que simplemente lo agregará a cualquier parte de su clase.
func shareButtonAction(button: JKButtonNode) {
print("The share button has been pressed.")
}
Estos botones funcionan igual que UIButtons. Incluso pueden cambiar de estado si así lo desean. Y, por supuesto, cuando no desee que se muestre, simplemente elimínelo del padre. También puede hacerlo más personalizable; solo mira en el primer enlace que te di. Ejemplo de captura de pantalla. También puede cambiar las propiedades del título simplemente llamando a setTitleProperties.
Aquí está mi código para mi botón "Compartir":
ShareButton = UIButton(frame: CGRect(x: 0, y:0, width: view.frame.size.width / 3, height: 60))
ShareButton.center = CGPointMake(CGRectGetMidX(self.frame), 3*CGRectGetHeight(self.frame)/4)
ShareButton.setTitle("Share", forState: UIControlState.Normal)
ShareButton.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)
ShareButton.addTarget(self, action: ("pressed:"), forControlEvents: .TouchUpInside)
self.view?.addSubview(ShareButton)
PD: mi botón Compartir funciona, pero cuando el usuario comparte su puntaje y quiere volver a jugar, el botón Compartir aparece en la Escena del juego.
La primera regla al hacer un juego SpriteKit es tratar de no usar UIKit. Toda su interfaz de usuario debe crearse directamente en SKScenes utilizando las API de SpriteKit (SKLabelNodes, SKSpriteNodes, SKNodes, etc.). Hay excepciones a esto, como quizás usar UICollectionViews para menús de selección de nivel masivo, pero la IU básica nunca se debe hacer con UIKit.
Por lo tanto, debe crear sus botones con SKSpriteNodes y agregarlos directamente al SKScene que desee.
Hay muchos tutoriales para google sobre cómo hacer esto, uno simple es este
https://nathandemick.com/2014/09/buttons-sprite-kit-using-swift/
Para obtener una más completa, echa un vistazo al juego de muestras de manzanas "DemoBots" o echa un vistazo a estos interesantes proyectos en gitHub.
https://github.com/nguyenpham/sgbutton
https://github.com/jozemite/JKButtonNode
En los juegos de SpriteKit solo se tiende a tener 1 vista Controller (GameViewController) que presentará todos tus SKScenes (GameScene, MenuScene, etc.). Si usas elementos UIKit, se agregan a GameViewController y, por lo tanto, se mostrarán en todas las escenas (como el botón compartir).
self.view?.addSubview(shareButton) // self.view is your GameViewController
Si tienes un juego con más de 1 SKScene y bastantes botones, será una locura administrarlo.
Por otro lado, si usas las API de SpriteKit, y porque cada SKScene comienza en un estado limpio cuando lo ingresas, no tienes que preocuparte por nada de esto.
Si insistes en usar UIKit, tendrás que quitar u ocultar el botón Compartir antes de hacer la transición a la escena del juego y mostrarla o agregarla de nuevo cuando lo desees.
shareButton.isHidden = true
o
shareButton.removeFromSuperview()
Finalmente, como buena práctica, sus propiedades deben comenzar con letras pequeñas, no mayúsculas
shareButton = ...
Espero que esto ayude