我在ActionScript 3中寻找一种方法,允许用户滚动TextField(从左到右),如果文本量大于TextField的宽度而光标没有变为闪烁我
文本字段位于MovieClip中。我不能使用MouseChildren = false和selectable = false,因为两者都停止了可滚动的文本字段。
有什么想法吗?
答案 0 :(得分:4)
嗯,最简单的方法是设置myTextField.selectable = false。光标不会改变,文本字段的内容仍然可滚动。也许我在这里错过了一些东西,但它适用于我的简单测试。
答案 1 :(得分:1)
我建议如下:
关闭孩子TextField
mc.mouseChildren = false;
mc.addEventListener(MouseEvent.MOUSE_WHEEL, scroll);
并手动滚动:
private function scroll(e:MouseEvent):void{
tf.scrollV += e.delta;
}
工作示例here
<强>更新强>
要水平滚动文字,您需要更改TextField
的{{3}}属性,例如您可以像这样处理MOUSE_WHEEL
事件:
private function scroll(e:MouseEvent):void{
tf.scrollH -= e.delta;
}
答案 2 :(得分:1)
如果您仍然愿意接受建议...... (这是滚动滚动而不是鼠标按下以通过拖动滚动)
var scrollSize : int = 5; //# scrolling speed
tf.selectable = false;
tf.height = 25; //# (set height only if [tf] is already on Stage with text)
tf.addEventListener(MouseEvent.MOUSE_OVER, scroll_start);
tf.addEventListener(MouseEvent.MOUSE_OUT, scroll_stop);
function scroll_start (evt:MouseEvent) : void
{ tf.addEventListener(Event.ENTER_FRAME, handler_enterFrame ); }
function scroll_stop (evt:MouseEvent) : void
{ tf.removeEventListener(Event.ENTER_FRAME, handler_enterFrame ); }
function handler_enterFrame (evt:Event) : void
{
//# touch right edge = scroll text towards left
if ( tf.mouseX >= (tf.width - 10) ) { tf.scrollH += scrollSize; }
//# touch left edge = scroll text towards right
if ( tf.mouseX <= (tf.x + 10) )
{
if ( tf.scrollH > 0 ){ tf.scrollH -= scrollSize; }
else { /* do else here = Hurray */ }
}
}
如果你完全滚动到文本/句子的末尾然后立即向后滚动,当它达到零滚动时会出现<#34;弹跳&#34>会产生一种奇怪的效果仅 ;影响。可能由输入框架事件引起。如果可能的话,今晚晚些时候会检查,但代码中有一般概念...
得飞,但希望它有所帮助...