这是我正在制作卡片类的构造函数。当我创建一个缩放并单击它时,实际只注册了1.0x缩放区域内的点击。即如果我按比例传递1.5,那么点击边框就不起作用了。为什么不?我已经扩展了演员本身。
public Card(float x, float y, float scale)
{
this.setPosition(x, y);
faceSprite = new Sprite(MyResources.getInstance().cardTextureRegion);
faceSprite.setPosition(x, y);
faceSprite.setScale(scale);
borderSprite = new Sprite(MyResources.getInstance().cardBorderTextureRegion);
borderSprite.setPosition(x, y);
borderSprite.setScale(scale);
// Set boundaries for ourselves (the actor). Note that we have to match the scale of the sprites.
setSize(borderSprite.getWidth(), borderSprite.getHeight());
setScale(scale);
// Add ClickListener
final Card thisCard = this;
addListener(new ClickListener() {
public void clicked(InputEvent event, float x, float y) {
((MyStage)(thisCard.getStage())).cardClicked(thisCard);
}
});
}
答案 0 :(得分:1)
基本Actor
类可能缺少某些功能,包括适当的比例处理。如果您只想显示一些图像(根据您使用的Sprite
对象判断),我建议使用现有的类而不是自定义actor - 特别是因为您可能无法正确渲染Sprites
Actor
参数,如果您使用大量自定义操作。
Image
允许您显示“精灵” - 尽管有些简化,但它应该足够了。要存储图像,您可以使用Table
(更灵活)或Stack
(可以使用相同尺寸的多张图片)。
如果您真的想坚持使用自定义actor方法,请尝试使用此方法而不是更改比例:
setSize(borderSprite.getWidth() * scale, borderSprite.getHeight() * scale);
如果你没有在运行时手动更改Card
比例(仅在创建期间进行设置),它应该可以正常工作。
答案 1 :(得分:1)
您可以使用图像类来显示图像。
Texture texture=new Texture("test.jpg");
Image image=new Image(texture);
//您可以根据需要使用setsize()或setBounds()。
image.setScale(scale);
image.addListener(new ClickListener(){
@Override
public void clicked(InputEvent event, float x, float y) {
((MyStage)(thisCard.getStage())).cardClicked(event.getTarget());
}
});