TextField中插入点/插入符底部的随机闪烁白色像素? (闪光灯/ AS3)

时间:2013-07-16 21:15:21

标签: actionscript-3 textfield flash flashdevelop

我正在使用FlashDevelop& Flash Player 11.7(NPAPI版本)。

基本上,当TextField具有焦点时,我会在插入点/插入符/文本光标底部看到一个随机的白色像素。当文本光标以不同的间隔闪烁时,它会不断闪烁。这让我发疯了。

这是我在几次尝试后获得的屏幕抓取:

Screen Grab

为什么要这样做,我该怎么做才能禁用它?

this._textField = new TextField();
this._textField.defaultTextFormat = new TextFormat("FleftexYC", 8, 0x000000, true);
this._textField.embedFonts = true;
this._textField.height = 13;
this._textField.type = TextFieldType.INPUT;
this._textField.x = 9;
this._textField.y = 7;

FleftexYC是一种自定义/嵌入字体,但这不是问题。这仍然发生在像Arial这样的系统字体上。

有什么想法吗?

[编辑] :也在11.8确认。但是,在Internet Explorer中,像素是黑色而不是白色。

[编辑] :我使用的是Windows 7,不确定Mac上是否也会出现这种情况。这不会发生在Google Chrome的PPAPI版本的Flash上​​,但 会在NPAPI版本和Internet Explorer版本中发生。

[编辑] :除了Internet Explorer之外,Mozilla Firefox 看起来像是一个闪烁的黑色像素,而不是白色的像素。

4 个答案:

答案 0 :(得分:0)

我无法重现您的错误,但是在文本字段上设置.cacheAsBitmap会有所帮助。 它会减慢一点 - 但你必须亲自尝试。

答案 1 :(得分:0)

您是否从Flash发布了html文件?如果没有,请尝试复制页面中的整个发布代码。如果是,您使用的是什么版本的闪存? 另外,你可以分享你的flash和html文件吗?

答案 2 :(得分:0)

我构建了一个测试类来隔离所描述的问题,并且问题不会重现。您应该能够在Flash开发中创建一个新项目并在任何浏览器中对其进行测试,并发现问题不是由您在上面显示的任何代码引起的。

它可能是由程序的其他部分引起的,例如当您将值分配给“test”并设置选择时。但是你可以通过运行它来消除一些可能的原因。

如果运行此代码的计算机上存在问题,那么您的Flash版本会以某种方式损坏。删除并重新安装应修复它,或者该机器的某些其他独特方面导致您的闪存以非标准方式编译。 (但是它的价值,这是不太可能的)

另一种可能性是浏览器。您确定您的浏览器缩放设置为0吗?这似乎也不太可能。您使用的是其他API,如stage3D吗?自定义反别名?

这是我的班级:

    package 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.text.TextField;
    import flash.text.TextFieldType;
    import flash.text.TextFormat;

    /**
     * ...
     * @author Zachary Foley
     */
    public class Main extends Sprite 
    {
        //[Embed(source='C:/WINDOWS/Fonts/verdana.ttf', fontFamily="Verdana", fontWeight="regular", embedAsCFF="false")]
        [Embed(source='C:/WINDOWS/Fonts/arial.ttf', fontFamily="Verdana", fontWeight="regular", embedAsCFF="false")]
        public var Verdana:Class;

        private var mytextfield:TextField = new TextField();
        private var mytextformat:TextFormat = new TextFormat();
        private var _textField:TextField;

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            this._textField = new TextField();
            this._textField.defaultTextFormat = new TextFormat("Verdana", 8, 0x000000, true);
            this._textField.embedFonts = true;
            this._textField.height = 13;
            this._textField.type = TextFieldType.INPUT;
            this._textField.x = 9;
            this._textField.y = 7;
            this._textField.text = "Test";
            addChild(_textField);
        }

    }
}

答案 3 :(得分:0)

Flash中的TextFields因奇怪的渲染问题而臭名昭着,因为您的应用程序变得更加复杂。他们会很好,然后突然间,一个看似无关的变化将一切都搞砸了。有一个陡峭的学习曲线,但切换到TLF字段。方式更稳定。

相关问题