2016-08-01 38 views
1

我正在寻找一种方法在ActionScript 3中允许用户滚动TextField(从左到右),如果文本的数量大于TextField的宽度而没有将光标更改为闪烁I.ActionScript 3 textfield禁用默认光标

textfield位于MovieClip中。我不能使用MouseChildren = false和selectable = false,因为两者都停止可滚动的文本字段。

任何想法?

+0

更新我的回答 – www0z0k

回答

4

那么,最简​​单的方法是设置myTextField.selectable = false。光标不会更改,文本字段的内容仍可滚动。也许我在这里错过了一些东西,但它适用于我的简单测试。

+0

我从头开始创建一个小项目,不能复制这样的结果因为TextField现在是不可滚动的。我真的不确定你是如何设法做到的。也许你可以提供这个工作的例子吗? – AntBirch

+0

当然,你可以找到例子[这里](http://wonderfl.net/c/0rVK)。由于页面有自己的可滚动内容,因此最好将预览切换到全屏模式。 – Nbooo

+1

我想我可能对我的问题措辞不佳。 TextField需要可滚动且不可拖动。我有TextField其中包含文本太长的文本字段,所以这是隐藏的。我希望用户能够从左向右滚动TextField以便能够查看所有文本。我遇到的问题是,如果我可以选择TextField,那么textfield不能从左到右滚动。 – AntBirch

1

我建议如下:为孩子TextField

mc.mouseChildren = false; 
mc.addEventListener(MouseEvent.MOUSE_WHEEL, scroll); 


关掉鼠标交互性和手动滚动它:

private function scroll(e:MouseEvent):void{ 
    tf.scrollV += e.delta;   
} 

工作实例here

更新:
要滚动的文字水平,你需要改变TextFieldscrollH属性,例如,你可以处理MOUSE_WHEEL事件是这样的:

private function scroll(e:MouseEvent):void{ 
    tf.scrollH -= e.delta;   
} 
+0

我觉得这个答案有点混乱。我不希望能够拖动MovieClip,我只是希望文本可以像动态TextField一样可以滚动。 – AntBirch

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 */ } 
    } 
} 

有一个奇怪的效果,如果你完全滚动文本/句子,然后立即结束发生向后滚动,当滚动到零滚动时会出现“反弹”效果。可能造成输入框架事件。将检查后,今晚如果可能的,但一般的概念是有代码...

得飞,但希望它可以帮助...

+1

非常感谢您的回答,不幸的是MOUSE_OVER不适合这个项目,但是会在将来记住它。 – AntBirch

+0

@AntBirch,不用担心朋友,你现在有一个可行的解决方案。 –