Bry*_*yan 4 events textbox dynamic actionscript-3
我用卡通问题泡泡建立了一个问答游戏.根据问题的长度调整泡沫大小.我想在动态文本框上更改事件以调用更改问题气泡大小的函数.
但是,从代码动态修改文本框值时,永远不会调用change事件.
question_txt.addEventListener(Event.CHANGE, setTextBubbleSize);
function setTextBubbleSize(event:Event):void
{
trace("QUESTION TEXT CHANGED");
textBubble_mc.height = 30 + question_txt.text.length * 1.2;
if (textBubble_mc.height > 170) textBubble_mc.height = 170;
question_txt.y = textBubble_mc.y - textBubble_mc.height / 6 + 10;
}
Run Code Online (Sandbox Code Playgroud)
我想使用change事件,因为我的代码中有几个地方可以设置question_txt.如何让文本框触发更改事件?
另外,有没有办法计算question_txt中的行数来更准确地设置textBubble_mc的高度?
当您使用as3正确更改文本框时,我认为不会触发CHANGE事件.但您总是可以通过以下方式举办活动:
dispatchEvent(new Event(Event.CHANGE, true));
Run Code Online (Sandbox Code Playgroud)
对于文本框中的行数,可以正确使用TextField的numLines
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/text/TextField.html#numLines
是的,正如David评论的那样,TextField
只有当用户输入编辑时才调度CHANGE事件 - 实际上,大多数组件通常都是如此.当然,原因是因为如果您手动尝试更改"更改"处理程序中的字段值,则需要进行事件的递归循环,您必须手动检测出自己的出路.
你想要做的是做一个包装函数,如:
function setQuestionText( s:String ):void
{
question_txt.text = s;
setTextBubbleSize();
}
Run Code Online (Sandbox Code Playgroud)
对于您的其他问题,没有理由根据行数或字符数估计文本字段的高度 - 只需设置text
属性,您就可以立即查询文本字段height
.它将准确反映该字段的新高度,如果您更改字段的宽度,将立即更新高度等.
或者,如果您需要了解有关文本字段大小的任何详细信息,则可以始终使用TextExtent.
归档时间: |
|
查看次数: |
25336 次 |
最近记录: |