ActionScript:手动滚动包含在Scroller窗口内的元素

时间:2011-06-21 21:26:03

标签: actionscript-3 scroller flex-spark

我的问题的答案可能很简单,但我没有找到在网络上解决它的例子,也没有找到一个阅读ActionScript参考的解决方案。

我的问题如下:我在Scroller(spark.components.Scroller)窗口中有一个很大的UIComponent派生元素。 Scroller类非常棒,因为当我的canvas元素(动态改变大小)超出其边界时,滚动条会自动出现并处理其中UIComponent的滚动。

但是,我不仅要能够使用这些自动出现的滚动条进行滚动,还要使用我自己实现的平移工具(例如,类似于Adobe软件中的手​​动工具)。问题是我无法正确修改Scroller窗口中元素的位置。

作为第一种方法,我尝试访问我的元素''x'和'y'属性,但是,当更改它们时,我不会得到想要的结果。它的代码如下(其中,出于简化的原因,我使用文本标签作为我的'内部'元素,并使用两个按钮作为外部滚动控制器,而不是手工工具)

Tests.mxml          

    <fx:Script>
        <![CDATA[

            protected function der_clickHandler(event:MouseEvent):void
            {
                text.x += 5;

            }

            protected function izq_clickHandler(event:MouseEvent):void
            {
                text.x -= 5;

            }

        ]]>
    </fx:Script>

    <fx:Declarations>
    </fx:Declarations>
    <s:Scroller id="sc" x="50" y="50" width="200" height="100">
        <s:Group width="100%" height="100%">
            <s:Label id="text" width="400" height="10" x="50" y="50" text="blebleblebleblebleblebleblebleblebleblebleble"/>
        </s:Group>
    </s:Scroller>
    <s:Button id="der" x="154" y="182" label="-&gt;" click="der_clickHandler(event)"/>
    <s:Button id="izq" x="76" y="182" label="&lt;-" click="izq_clickHandler(event)"/>

</s:Application>

和编译版本的链接,看看我在说什么: http://megaswf.com/file/1135821 (如果看不到,请按'查看全屏')

帮助真的很感激,因为我整个下午都被困在这里,而且我的项目确实需要它:S

无论如何,非常感谢提前和问候!

1 个答案:

答案 0 :(得分:1)

我设法解决了! (这是我本周第二次在这里发布后解决了一些问题:D)。

我必须更改的属性是sc.viewport.horizo​​ntalScrollPosition + = 5;而不是内部元素'x'的位置。对于垂直位置也一样。