AS3:getCharBoundaries()返回null

时间:2015-08-20 18:53:21

标签: actionscript-3

当我使用getCharBoundaries()并且我不确定导致它的原因时,我一直在看这个问题。我有的一些文字对它完全没问题,有时它会引起人们的注意。

这是我的代码

while (copy.text.indexOf("{") != -1) //copy is a proprietary textnode type object
{
    var char:String = "tf"

    var searchString:String = "{" + char + "}";
    var index:int = copy.text.indexOf(searchString);

    var bounds:Object = copy.content.getCharBoundaries(index); //content is a flash textField
    //sprite is created elsewhere, it is not the issue
    sprite.x = copy.x + bounds.x + 4; //here we sometimes get the error that bounds is null
    sprite.y = copy.y + bounds.y - 2;


    //replace the string we used with characters that are easy to hide with the sprite and take up a decent width
    copy.text = copy.text.replace(searchString, "---" ); 
}

断开的那个有我们想要移除的2个子串(称为" {tf}"。第二个总是断开,即使我完全从字符串中删除第一个。字符串不是我可以公开发布的东西,因为它是工作的一部分,但足以说有两段用1行分隔(也就是说,两个"返回"被输入到它中)。但是,如果我删除所有的返回,第二个STILL会中断。

正如我的研究告诉我的那样,只是getCharBoundaries()不喜欢某些角色 - 大部分时间都是标点符号 - 但是99%的时间我通过在一个字符串中,它工作正常。我希望有人可以解释为什么getCharBoundaries()返回null(文档没有解释这个)以及我可以做些什么来修复它。

我已经尝试在更换字符串之前获取所有索引,但我遇到了同样的问题

2 个答案:

答案 0 :(得分:1)

这是我们设法解决的问题。在尝试在每一行上得到一个符号后,我们发现它每次都在第3行之后断开。

这有助于我们弄清楚我们的文字域太小getCharBoundaries()试图找到超出它的宽度和高度的空间中的相对点,并且它不喜欢它。正如它所做的那样,文本正在溢出文本区域,因此文本字段的高度对我们来说从来都不是问题。据我们所知,文本域的边界与文本出现的一样大,但事实并非如此。

答案 1 :(得分:0)

如果动态创建文本字段,您可以做的一件事是添加一个enterframe侦听器,实际上跳到下一帧,其中将使用新的height和width参数更新文本字段。

addEventListener(Event.ENTER_FRAME, validate);

private function validate(e:Event):void
{
   removeEventListener(Event.ENTER_FRAME, validate);
   txt.getCharBounds(yourIndexHere);

}