每当我在mxml组件(包括许多状态)中使用大量嵌套有很多Vbox和其他容器时,当我看到屏幕上出现滚动条时,我总是感到困惑,特别是在其中有数据网格(我总是希望显示数据网格中的滚动条而不是父容器,我通常在运行时将数据网格的高度和宽度设置为小于其父容器。
我的问题是,我怎么可能知道(快速),使用调试器,哪个组件是我在屏幕上看到的滚动条的来源(如果有多个,那么当我有一些必须改变的组件时,必须改变向上或向下滚动。)
感谢。
答案 0 :(得分:0)
我意识到这个答案没有直接使用调试器。我的意思是它真的是一个简单工具的想法。
我快速整理了一个简单的应用程序,其功能是报告显示对象正在调度鼠标滚轮事件。如果有滚动条,对应用程序无关紧要,但我想你可以根据需要进行调整。这真是一个快速的开始,这是代码......
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" minWidth="955" minHeight="600"
creationComplete="init()">
<mx:HBox id="HBoxWithScrollbar" width="600" height="500">
<mx:HBox width="800" height="800">
</mx:HBox>
</mx:HBox>
<mx:TextArea id="record" height="300" width="600"/>
<mx:Script>
<![CDATA[
private function init():void{
record.text = 'Scroll Record\n';
this.addEventListener(MouseEvent.MOUSE_WHEEL, recordObject);
for each (var obj:DisplayObject in this.getChildren()){
obj.addEventListener(MouseEvent.MOUSE_WHEEL, recordObject);
}
}
protected function recordObject(event:MouseEvent):void{
record.text += (event.target as DisplayObject).toString() + '\n';
}
]]>
</mx:Script>
</mx:Application>
这里最重要的是要看到你可以在顶层拾取鼠标滚轮事件,因为它默认会冒泡,并且不可取消。
一旦你掌握了那个事件,你就有了选择。
这是使用Flex SDK 3.6版构建的,但构建4.x版本并不需要太多。我只是显示目标显示对象的“toString()”值,但这可能是您想要的任何属性。您可能希望为循环添加事件以及事件处理程序中的某些错误处理。正如我所说,它只是一个开始,我希望它有所帮助。