我正在使用FlashDevelop& Flash Player 11.7(NPAPI版本)。
基本上,当TextField具有焦点时,我会在插入点/插入符/文本光标底部看到一个随机的白色像素。当文本光标以不同的间隔闪烁时,它会不断闪烁。这让我发疯了。
这是我在几次尝试后获得的屏幕抓取:
为什么要这样做,我该怎么做才能禁用它?
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 还看起来像是一个闪烁的黑色像素,而不是白色的像素。
答案 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字段。方式更稳定。