向sprite添加文本会导致缩放和可见性问题

时间:2012-07-02 09:31:08

标签: actionscript-3 sprite textfield

我将在底部添加简化版本的代码。

我有一个精灵,它是可见的和快乐的。我有一个文本域,这是可见和快乐的。如果我出于动画的目的将文本字段打印到精灵中,那么一切都会破裂。

精灵有一个阴影,输出会抛出警告,精灵的宽度为8900+像素,如果我是文本字段,则为7000像素高。我知道我可以在动画期间使用hack来保持文本字段和精灵一起,但我宁愿不这样做。代码:

private var headerField:TextField = new TextField();  //text field for the header text
private var contentBox:Sprite;  //box surrounding text elements

headerFormat.font = boldFont.fontName;
            headerFormat.align = TextFormatAlign.LEFT;
            headerFormat.color = (0xDDDDDD);
            headerFormat.size = headerSize;
            headerFormat.leading = 2;

contentBox = new Sprite();
            contentBox.graphics.beginFill(uint(pageColour));
            contentBox.graphics.drawRect(0, 0, 100, 100);
            contentBox.graphics.endFill();

contentBox.filters = [new DropShadowFilter(4, 90, 0, 0.75, 4, 4, 0.75, 3, false, false, false)];

contentBox.x = 25;
                contentBox.y = 150;
                contentBox.width = 1140;
                contentBox.height = 555;

headerField.x = 50;
                headerField.y = 180;
                headerField.width = 610;

addChild(contentBox);
addChild(headerField);

工作正常,改变:

addChild(headerField);

为:

contentBox.addChild(headerField);

文本字段不会显示,输出显示阴影无法渲染,一切都运行得很慢。

我尝试在更改宽度等之前将项目添加到舞台上,没有区别。有什么想法吗?

干杯。

2 个答案:

答案 0 :(得分:0)

使用TweenMax及其MotionBlur插件时,我解决了这个问题。你也用它吗?

或尝试使用embeddedFont,看看是否正常。

答案 1 :(得分:0)

请记住,基于父级确定DisplayObject的X和Y属性时。因此,更改文本的父级意味着它可能不会在您认为的位置结束(例如,它的X位置将不再是舞台左侧的50px,而是来自contentHeader的50px,它本身距离左侧25px阶段)。尝试注释掉阴影线(因为这似乎是导致错误的那一行),然后看到文本字段实际上在位置明智的位置并调整它。我不知道为什么会导致错误。

或者,尝试注释掉设置标题的X,Y和宽度的行,看看是否有任何改变。也许这会帮助你缩小这个bug。