0

例如 mx.controls.Image 对象仅在我将它们直接添加到主应用程序对象时才会显示。如果我向先前创建的 Image 对象添加“子图像”,它根本不会显示。为什么 ?我错过了什么概念?

我想做的事:

var img : Image = new Image;
var subimg : Image = new Image;

img.source = "images/panel.png";
subimg.source = "images/panel.png";

subimg.x = 10;
subimg.y = 10;
addChild (img);
img.addChild(subimg);    // img is displayed, but not the overlapping subimg

好的,这里的代码是如何通过直接将 subimg 添加到应用程序中的,就像 img 一样 - 这个当然有效:

var img : Image = new Image;
var subimg : Image = new Image;

img.source = "images/panel.png";
subimg.source = "images/panel.png";

subimg.x = 10;
subimg.y = 10;
addChild (img);
addChild(subimg);    // img & subimg is displayed correctly
4

1 回答 1

0

您到底想做什么,而第二个示例不适合您?一般来说,UIComponents 是具有复杂内部结构的东西,它们是可换肤和可样式化的等等,它们管理自己的内容(就像 Image 一样,它用加载的资产填充自己)。

我对 Image 不够熟悉,无法准确说出问题所在 -subimg对象是否被隐藏或负载是否失败,或者是什么。但是您可能应该做的是制作自己的 Sprite 并在其中添加两个图像,或者制作两个精灵,为每个精灵添加一个图像,并按照您喜欢的方式将它们作为父子关系,这样您就可以拥有类似的父子关系而不会弄脏在组件的内部。

例如:

// ... make img and subimg
var imgContainer:Sprite = new Sprite();
imgContainer.addChild(img);
var subimgContainer:Sprite = new Sprite();
subimgContainer.addChild(subimg);
imgContainer.addChild(subimgContainer);
addChild(imgContainer);
于 2010-08-17T13:26:33.117 回答