例如,只有当我将它们直接添加到主应用程序对象时,才会显示mx.controls.Image对象。如果我向先前创建的Image对象添加“subimage”,它就不会显示。为什么?我错过了什么概念?
我想做什么:
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
答案 0 :(得分: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);