有没有办法“聆听”动态文本?我在舞台上有这个动态文本框,并且我想在动态文本被更改后调用一个功能。我试图添加事件监听器,但它似乎只适用于INPUT文本。有什么建议么? 谢谢actionscript 3跟踪动态文本更改
回答
您是否尝试过CHANGE
活动?它应该适用于所有类型的TextField,包括非输入类型。
其实,正如这个问题所说,只有输入文本发送CHANGE事件。 http://stackoverflow.com/questions/977847/as3-textbox-change-event-not-firing – annonymously 2011-12-18 09:58:06
正如你所说,只有输入文本发送CHANGE事件。你必须解决它,也许是这样的:
var oldText:String = "";
function changeEnterFrame (e:Event) {
if (oldText != textField.text) {
// Do your stuff here
}
oldText = textField.text;
}
addEventListener(Event.ENTER_FRAME, changeEnterFrame);
虽然@ annonymously的答案作品,重视enterFrame事件听众等待文本改变(或任何改变,对于这个问题)是不是一个好主意 - 中文本可能根本不会改变,那么为什么你会每秒多次运行一段代码,如果它可以避免的话?更不用说,事实上,你必须一遍又一遍地为每一个你想要监视的新文本字段实例。
最好对实际变化做出反应,这些变化是由您自己设置的属性引起的。您应该简单地扩展了TextField类,并重写setter方法的htmlText和/或文字派遣更改事件:
override public function set text (text : String) : void {
super.text = text;
dispatchEvent (new Event (Event.CHANGE);
}
明白了,谢谢。也感谢所有其他帮手。 – jazz 2011-12-18 13:31:41
你可以写很简单的子类,可以让你听文本更改事件。
Sublass:
package
{
import flash.events.Event;
import flash.text.TextField;
public class CustomTextField extends TextField
{
public function CustomTextField()
{
super();
}
override public function set text(value:String):void
{
if(super.text != value)
{
super.text = value;
dispatchEvent(new Event(Event.CHANGE, true));
}
}
}
}
用例:
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
public class CustomTextFieldTest extends Sprite
{
private var tf:CustomTextField;
public function CustomTextFieldTest()
{
tf = new CustomTextField();
tf.x = tf.y = 10;
tf.width = tf.height = 200;
tf.addEventListener(Event.CHANGE, onTfChange);
addChild(tf);
stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
}
private function onTfChange(e:Event):void {
trace("text changed, new text: '" + tf.text + "'");
}
private function onMouseDown(e:MouseEvent):void {
tf.text = "some random text: " + Math.round(100 * Math.random());
}
}
}
哎呀,错过了@ weltraumpirat的回答:) – skozin 2011-12-18 10:16:47
- 1. Actionscript-3:动态文本
- 2. 在ActionScript 3中如何动态更改文本框的行为
- 3. 跟踪更改为纯文本 - rails,jquery
- 4. actionscript 3如何跟踪时间流逝?
- 5. 跟踪更改
- 6. 跟踪更改
- 7. 跟踪更改
- 8. 跟踪更改
- 9. ActionScript 3:设置动画文本动态文本实例
- 10. LINQ跟踪更改
- 11. 我不能在ActionScript 3中更改按钮内动态文本的内容
- 12. 状态更改时的时间跟踪
- 13. 如何更改和跟踪对文本区域的更改
- 14. ActionScript - Tweener中的跟踪更新值
- 15. 跟踪版本校准更改
- 16. Actionscript 3动态文本自动滚动到最底部
- 17. 跟踪摆动GUI中的更改
- 18. ActionScript跟踪数组indexOf?
- 19. ActionScript 3.0中手势跟踪
- 20. 使用动作文本从文本文件更改动态文本3
- 21. 动态更改ActionScript 3中的图片而不闪烁
- 22. GNU如何跟踪文件更改?
- 23. 跟踪文档位置更改
- 24. 如何跟踪文件上的更改?
- 25. C++/Qt:跟踪文件系统更改
- 26. 跟踪记录/文档更改?
- 27. 跟踪文档内容更改
- 28. Actionscript 3修改标签组件文本
- 29. 如何使用spring动态跟踪数据库更改?
- 30. Actionscript 3:动态加载ai文件?
可能重复:http://stackoverflow.com/questions/977847/as3-textbox-change-event-not-firing – annonymously 2011-12-18 10:00:13