Я написал простой пример, который, как я ожидал, сделает это.Соответствующий код вставлен ниже, полный исходный код доступен здесь .
Во-первых, метод моего игрового класса, который рисует три круга как изображения холста, используя метод asCanvasImage
на моем Circle
класс:
public void drawThreeTransparentCircles() {
// create an immediate layer and add to root layer
ImmediateLayer circleLayer = graphics().createImmediateLayer(
new ImmediateLayer.Renderer() {
public void render(Surface surf) {
Circle redCircle = new Circle(-25, 0, 50, Color.rgb(
255, 0, 0), 0.5f);
Circle whiteCircle = new Circle(0, 0, 50, Color.rgb(
255, 255, 255), 0.5f);
Circle blueCircle = new Circle(25, 0, 50, Color.rgb(0,
0, 255), 0.5f);
surf.drawImage(redCircle.asCanvasImage(),
redCircle.getScreenX(), redCircle.getScreenY());
surf.drawImage(whiteCircle.asCanvasImage(),
whiteCircle.getScreenX(),
whiteCircle.getScreenY());
surf.drawImage(blueCircle.asCanvasImage(),
blueCircle.getScreenX(),
blueCircle.getScreenY());
}
});
rootLayer.add(circleLayer);
}
А затем asCanvasImage
метод моего Circle
класса:
public CanvasImage asCanvasImage() {
int diameter = radius * 2;
CanvasImage circleImage = graphics().createImage(diameter, diameter);
Canvas canvas = circleImage.canvas();
canvas.setFillColor(color);
canvas.fillCircle((float) radius, (float) radius, (float) radius);
canvas.setAlpha(alpha);
return circleImage;
}
Значение альфа установлено равным 0,5 для каждого круга.Но это результат, когда я запускаю версию Java:
Редактировать: Я обнаружил, что если я изменяю альфа-значение на rootLayer, это делаетпрозрачные изображения:
rootLayer.setAlpha(0.5f);
Однако я хочу сделать каждое изображение круга независимо прозрачным с различными значениями альфа.Означает ли это, что я должен добавить каждое изображение в свой слой и установить прозрачность на этом слое?