我正在创建一个游戏,我在其中创建了一个简单的UI,并且我希望每当玩家点击播放按钮时播放按钮就成为一个动作。
这也是我的代码。
//I JUST DID THIS.
let bgImage = SKSpriteNode(imageNamed: "bg.png")
bgImage.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
bgImage.size = self.frame.size
bgImage.name = "button1"
self.addChild(bgImage)
答案 0 :(得分:1)
默认情况下,isUserInteractionEnabled
为 false ,因此,与您的bgImage
类似的场景中的触摸是,默认,简单的触摸处理到主(或父)类(对象在这里,存在,但如果你不实现任何动作,你只需触摸它)
如果在userInteractionEnabled
子类上将SKSpriteNode
属性设置为true,则触摸委托将在此特定类中调用。因此,您可以在同类中处理精灵的触摸。但是你不需要它,这不是你的情况,你没有将bgImage
子类化。
你应该简单地在场景中制作:
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let location = touch.location(in: self)
let node : SKNode = self.atPoint(location)
if node.name == "button1" {
print("Tapped")
}
}
}
当我查看你的图片时,我怀疑你的精灵bg.png
是由背景和按钮图像组成的:这是非常不舒服的,你应该只使用关于按钮的图像,如果你愿意,可以制作另一个精灵来显示你的背景,否则你会触摸所有(背景和按钮,不仅仅是你需要的按钮......)。
因此,您应该将图像分开,例如您的按钮可以是:
答案 1 :(得分:0)
您是否尝试添加: public void fillStablefordPDF(Context ctx) {
OutputStream output = null;
try {
output = new FileOutputStream(ctx.getExternalCacheDir().getAbsolutePath() + "/StableFord_filled.pdf");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
PdfReader reader = new PdfReader(new FileInputStream(ctx.getExternalCacheDir().getAbsolutePath() + "/StableFord.pdf"));
PdfStamper stamper = new PdfStamper(reader, output);
AcroFields acroFields = stamper.getAcroFields();
...
acroFields.setField("Name", "TOM");
?
bgImage.isUserInteractionEnabled = true
然后:
let bgImage = SKSpriteNode(imageNamed: "bg.png")
bgImage.position = CGPoint(x: self.size.width/2, y: self.size.height/2)
bgImage.size = self.frame.size
bgImage.name = "button1"
bgImage.isUserInteractionEnabled = true
self.addChild(bgImage)