swfobject奇怪的行为

时间:2009-11-20 18:01:31

标签: flex flash actionscript-3 swfobject

我正在使用swfobject来嵌入我的闪光灯。它做的很奇怪。

我使用FlexBuilder创建了一个简单的文本字段。这是一个AS3项目,它扩展了Sprite。我将其宽度设置为640,高度设置为450.然后,在页面的swfobject参数中,我还设置了640 x 450.我已经使背景变得漂亮,红色和丑陋,所以你可以看到它。 :)

http://www.brighttext.com/flash/TextFieldSetFormat.html

这似乎是正确的尺寸。但我有一个文本字段应该是几乎相同的大小和高度。这在FlexBuilder中运行正常(尺寸合适)但是一旦我添加了swfobject就搞砸了任何人都可以看到发生了什么?

编辑注意:我只是看着它,它看起来不错。但后来我刷新了页面,文本字段是邮票大小(再次 - 这是我看到的原始行为。)它现在在Firefox中看起来不错但在IE8中却没有。 Flash应该在所有浏览器中看起来都一样!! ??

AS3代码:

package {
 import flash.display.Sprite;
 import flash.text.TextField;
 import flash.text.TextFormat;
 import flash.text.Font;

[SWF(width="640", height="450", backgroundColor="#FFFFFF", frameRate="30")]
public class TextFieldSetFormat extends Sprite
{
    [Embed(source='C:/WINDOWS/Fonts/ArialBD.TTF',  fontWeight = 'bold', fontName='ArialBold')]

    [Embed(source='C:/WINDOWS/Fonts/Arial.TTF', fontWeight = 'regular', fontName='Arial')]

    public function TextFieldSetFormat()
    {
        var tf2:TextFormat = new TextFormat();
        tf2.size = 16;
        tf2.font = "Arial";
        Font.registerFont(_VerdanaFontBold);
        Font.registerFont(_VerdanaFont);
        var pad:Number = 10;
        var brightTextField:TextField = new TextField;
        brightTextField.backgroundColor = 0xDDF3B2;
        brightTextField.background = true;
        brightTextField.embedFonts = true;
        brightTextField.border = true;
        brightTextField.defaultTextFormat = tf2;
        brightTextField.wordWrap = true;
        brightTextField.multiline = true;
        brightTextField.width = stage.stageWidth - (4 * pad);
        brightTextField.height = stage.stageHeight - (3 * pad);
        brightTextField.x = 2*pad;
        brightTextField.y = 2*pad;

        brightTextField.text = "Dear Senators, I have become concerned over the idea that some in the Senate will oppose the public option because of a group of wild-eyed, overbearing but misinformed ideologues. These people mistakenly equate insurance reform with Socialism and call our  first African-American President unprintable epithets. This is unacceptable. The public option is the choice of more than 70% of Americans, a majority of the House and a great many opinion leaders. Passing insurance reform without a public option persists the current broken system. I am aware that many Senators would prefer to pass a reform bill with bipartisan support. But we cannot allow this critical debate to be hijacked by extremists or corporate profiteers. Thank you, and I look forward to hearing from you.";
        addChild(brightTextField);
    }
}
} 

2 个答案:

答案 0 :(得分:0)

好的,好吧,我已经弄明白了。

问题在于使用stage.stageWidth和stage.stageHeight。我还不确定为什么会这样,但是本着敏捷开发的精神,这是一个解决方案。 :)

不使用stage.stageWidth,只需使用多个像素。 (640 x 450,在我的情况下)。然后问题就消失了。

我会发布更多相关内容 - 包括我拍摄的截图,以及我在博客上发布的测试,并会在此处发布链接。

答案 1 :(得分:0)

尝试跟踪stage.stageWidth / Height的值,并使用Flash Tracer之类的插件查看其输出内容。

您可能只需要为Event.ADDED_TO_STAGE / INIT添加一个事件监听器,并在该监听器中执行您的设置代码。