Получение подкомпонента HGroup, который имеет ввиду контейнер Scroller Adobe Flex 4.5 - PullRequest
0 голосов
/ 02 февраля 2012

Я установил контейнер Scroller вокруг HGroup меток. Скроллер настроен так, чтобы отображать только одну метку за раз. То, что я пытаюсь сделать, это определить, какая метка отображается в Scroller при нажатии кнопки. Я изучил справочный материал по Scrollers и HGroups, но не могу сформулировать программную стратегию, чтобы определить, какой элемент группы находится в поле зрения.

Код скроллера для справки:

<local:Scroller id="imageViewer" includeIn="startState" left="411" right="411" top="241"
                    bottom="356" depth="2"> 
    <s:HGroup id="imageGroup" gap="0" width="100%" height="100%"> 
        <s:Label id="vin1337" width="201" height="104" color="white" fontSize="30"
                 text="Vehicle ID:1337" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin2567" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:2567" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin9456" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:9456" textAlign="center" verticalAlign="middle"/>
    </s:HGroup> 
</local:Scroller>

В конечном итоге эти ярлыки будут изображениями, но в настоящее время они используют ярлыки для подтверждения концепции.

Любая помощь будет принята с благодарностью, и спасибо за чтение.

EDIT: Поэтому после реализации подхода с помощью lastIndexInView я продолжаю получать сообщение «TypeError: Ошибка # 1009: невозможно получить доступ к свойству или методу пустой ссылки на объект». в строке "vehicleID.text = Label (lObj) .text;". Ниже приведен код:

Функция:

        protected function idSelect_clickHandler(event:MouseEvent):void
        {
            var hLay:HorizontalLayout = imageGroup.layout as HorizontalLayout;
            var lIndex:int = hLay.lastIndexInView;
            var lObj:Object = imageGroup.getElementAt(lIndex);

            vehicleID.text = Label(lObj).text;

            currentState="selectedState";
        }

Компоненты:

<local:SnapScroller id="imageViewer" includeIn="startState" left="411" right="411" top="241"
                    bottom="356" depth="2"> 
    <s:HGroup id="imageGroup" gap="0" width="100%" height="100%"> 
        <s:Label id="vin1337" width="201" height="104" color="white" fontSize="30"
                 text="Vehicle ID:1337" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin2567" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:2567" textAlign="center" verticalAlign="middle"/>
        <s:Label id="vin9456" width="199" height="104" color="white" fontSize="30"
                 text="Vehicle ID:9456" textAlign="center" verticalAlign="middle"/>
    </s:HGroup> 
</local:SnapScroller>

<s:Button id="idSelect" includeIn="startState" x="367" y="608" width="290" height="67"
          label="Select" click="idSelect_clickHandler(event)" color="#00008F" fontSize="24"/>

<s:Label id="vehicleID" includeIn="selectedState" x="425" y="453" color="#00008F" fontSize="24"
         text="Vehicle ID: ____"/>

Ответы [ 2 ]

0 голосов
/ 07 февраля 2012

Вторая проблема, с которой я столкнулся, была связана с тем, что я пытался получить доступ к компоненту vehicleID до его инициализации.Другими словами, я пытался изменить элемент, который не был включен в текущее состояние, но фактически был членом следующего состояния.

Решил его, сначала изменив состояние, а затем присвоивэтикетка.

0 голосов
/ 02 февраля 2012

Я думаю, что это должно ответить на ваш вопрос http://blog.flexexamples.com/2009/10/31/determining-how-much-of-an-item-is-visible-in-a-scrolling-vgroup-container-in-flex-4/

в основном макет имеет свойства firstIndexInView и lastIndexInView, которые сообщают вам, какие элементы видны.

...