ActionScript 3:如何顺利移动TextField?

时间:2014-04-17 11:13:32

标签: actionscript-3 optimization textfield smooth-scrolling

在我的程序中,我有一个文本在屏幕上滚动的功能。除了令人难以置信的迟滞运动外,这种方法很好。我只是将速度添加到文本字段的x位置,并且移动动画适用于所有其他对象(动画片段,位图等)。

编辑:

我现在尝试将文本转换为BitMap,然后移动它。不幸的是,这导致了相同的"滞后"很多突然的跳跃"跳跃"。

bmd = new BitmapData (event_field.width, event_field.height, true, 0);
bmd.draw (event_field);

bm = new Bitmap (bmd);
bm.x = event_field.x;
bm.y = event_field.y;
bm.cacheAsBitmap = true;
bm.smoothing = true;
this.addChild(bm);

在我的输入框架功能中:

bm.x-=3

有人有解决方案吗?

2 个答案:

答案 0 :(得分:1)

不平滑文本字段可能会提高性能,但是根据我的经验,使用本机TextField类具有无法真正克服的性能限制。文本的实时渲染很昂贵。将文本实时渲染为bitmapData可能也很昂贵,并且只有在文本变化不大的情况下才真正有用。无论如何,cacheAsBitmap应该已经在自动执行。

要克服这两个问题,应考虑使用位图字体。这些是预先渲染的,可以解决以上两个问题。但是,本机API不支持它。

我知道的两个选项:

  1. BMFontRenderer。一些应该提供支持的类 用于位图字体渲染。我没有尝试过,所以我不能担保 它。
  2. 在整个项目中使用Starling,其中包括 对位图字体和距离字段字体的出色支持 (可缩放的位图字体)。这是2D硬件加速框架, 所以这只是冰山一角 提供。我现在将其用于所有内容,但是对于您的项目来说,从本机框架切换到另一个框架可能为时已晚。

要生成位图字体,这些是Starling Manual推荐的一些工具。我个人使用Littera和BMFont:

答案 1 :(得分:0)

您可以尝试嵌入字体或动画位图而不是文本字段

  • 在动画开始前创建文本字段的快照,
  • 隐藏文字字段
  • 动画快照
  • 在动画完成时将不可见文本字段移动到目标位置,销毁快照并显示文本字段