2013-07-16 55 views
7

Tôi đang sử dụng FlashDevelop & Flash Player 11.7 (phiên bản NPAPI).Pixel nhấp nháy màu trắng ngẫu nhiên ở cuối điểm chèn/dấu mũ trong TextField? (Flash/AS3)

Về cơ bản, tôi thấy một pixel màu trắng ngẫu nhiên ở cuối điểm chèn/dấu mũ/con trỏ văn bản xuất hiện khi một TextField tập trung. Nó liên tục nhấp nháy khi con trỏ văn bản nhấp nháy nhưng ở các khoảng thời gian khác nhau. Nó khiến tôi điên lên.

Dưới đây là một màn hình grab tôi quản lý để có được sau một vài lần:

Screen Grab

Tại sao nó làm điều này và tôi phải làm gì để vô hiệu hóa nó?

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 là phông chữ tùy chỉnh/nhúng, nhưng đó không phải là vấn đề. Điều này vẫn xảy ra với các phông chữ hệ thống như Arial.

Mọi suy nghĩ?

[EDIT]: Đã xác nhận trong 11,8 cũng. Tuy nhiên, trong Internet Explorer, pixel có màu đen và không phải màu trắng.

[EDIT]: Tôi đang sử dụng Windows 7, không chắc chắn điều này có xảy ra trên máy Mac hay không. Điều này không xảy ra trên phiên bản Flash PPAPI của Google Chrome nhưng nó hiện xảy ra trong phiên bản NPAPI và phiên bản Internet Explorer.

[EDIT]: Ngoài Internet Explorer, có vẻ như Mozilla Firefox cũng hiển thị pixel đen nhấp nháy thay vì pixel màu trắng.

+0

bạn đã thử phông chữ hệ thống, như Arial chưa? – Marijn

+0

Chỉ cần thử, yep nó vẫn hiển thị điểm ảnh màu trắng nhấp nháy. – xLite

+0

Con trỏ chuột "I" trên các trường văn bản có một khoảng cách nhỏ ở giữa các đường ngang trên cùng và dưới cùng. Có thể tạo tác này là sự kết hợp giữa con trỏ văn bản nhấp nháy và khoảng cách của con trỏ chuột không? Bạn có thể thử thay đổi nền của phim và xem chính xác pixel đó đến từ đâu không? – catholicon

Trả lời

0

Tôi không thể tạo lại lỗi của bạn, nhưng có thể đặt .cacheAsBitmap trên trường văn bản sẽ trợ giúp. Nó sẽ làm chậm nó xuống một chút - nhưng bạn phải tự mình thử.

+0

Thông số kỹ thuật của bạn là gì? Tôi đã thử đặt 'cacheAsBitmap', nó không làm gì cả. – xLite

0

Bạn đã xuất bản tệp html của mình từ flash chưa? Nếu không, hãy thử sao chép toàn bộ mã xuất bản trong trang của bạn. Nếu có, bạn đang sử dụng phiên bản flash nào? Ngoài ra, bạn có thể chia sẻ tệp flash và html của mình không?

+0

Như tôi đã đề cập, đây là 11,7 NPAPI trở đi * (bao gồm 11,8 và các phiên bản khác được bao gồm trong bài đăng gốc) *. Điều này không sử dụng tệp HTML, chỉ là tệp SWF bình thường đang chạy trong plugin độc lập. Không có mẹo nào, chỉ cần sử dụng 'TextField' với văn bản màu trắng trên nền tối. – xLite

0

Tôi đã xây dựng một lớp thử nghiệm tách biệt vấn đề như được mô tả và sự cố không sinh sản. Bạn sẽ có thể tạo một dự án mới trong flash phát triển và thử nghiệm nó trong bất kỳ trình duyệt nào và thấy rằng vấn đề không phải do bất kỳ mã nào bạn hiển thị ở trên.

Có thể do một số phần khác trong chương trình của bạn gây ra, chẳng hạn như khi bạn chỉ định giá trị để "kiểm tra" và đặt lựa chọn. Nhưng bạn có thể loại bỏ một số nguyên nhân có thể bằng cách chạy nó.

Nếu sự cố tồn tại trên máy của bạn chạy mã này, thì bằng cách nào đó phiên bản flash của bạn bị hỏng. Loại bỏ và cài đặt lại nên sửa chữa nó, hoặc có một số khía cạnh độc đáo khác của máy đó gây ra flash của bạn để biên dịch một cách không chuẩn. (nhưng đối với giá trị của nó, điều này là khá khó)

Một khả năng khác là trình duyệt. Bạn có chắc là thu phóng trình duyệt của bạn được đặt thành 0 không? Điều này cũng có vẻ khó xảy ra. Bạn đang sử dụng API khác như stage3D? Một anti-alias tùy chỉnh?

Đây là lớp học của tôi:

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); 
     } 

    } 
} 
+0

Bạn có sử dụng các phiên bản trình phát mà tôi đã đề cập trong bài đăng gốc của mình không? Ngoài ra bạn có trên Windows không? – xLite

+0

có. Tôi đang sử dụng phiên bản Flash Player 11.8 - phiên bản nào của Flex SDK và xuất bản cho các cài đặt mà bạn đang sử dụng. Và cửa sổ 7 64 bit. Thử nghiệm trong bản xây dựng mới nhất của chrome, firefox và IE. –

+0

Có vẻ như đó là phiên bản 64bit đang ẩn nó. Bất kỳ cơ hội bạn có thể thử trên 32 bit? – xLite

0

Trường văn bản trong Flash được nổi tiếng cho các vấn đề vẽ kỳ lạ như ứng dụng của bạn trở nên phức tạp hơn. Họ sẽ ổn thôi, và rồi đột nhiên, một sự thay đổi dường như không liên quan sẽ thổi mọi thứ lên. Có một đường cong học tập dốc, nhưng chuyển sang trường TLF. Cách ổn định hơn.

Các vấn đề liên quan