Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Проблемы с ProgressBar-ом (http://www.flasher.ru/forum/showthread.php?t=129297)

grimskin 29.08.2009 01:28

Проблемы с ProgressBar-ом
 
Ситуация вкратце такая. AIR-аппликуха, в ней List в нем кастомный ItemRenderer на основе Canvas в котором есть ProgressBar, положение для которого задается в onCreationComplete и больше не изменяется. На тех элементах которые видны с самого начала все нормально, на остальных - бардак. Либо 100% либо 0%. Причем если поскролить список туда-сюда ситуация может и поменяться, т.е. какие-то элементы станут 100%, какие-то - 0%.

FlashPlayer 10-й, debug-версия, AIR 1.5, к проекту подключен as3corelib

Код:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
        width="100%"
        height="50"
        backgroundColor="#FFFFFF"
        backgroundAlpha="100"
        horizontalScrollPolicy="off"
        verticalScrollPolicy="off"
        >
        <mx:Script>
                <![CDATA[
                        import mx.controls.ProgressBarMode;
                ]]>
        </mx:Script>
       

        <mx:Canvas width="16" height="16" horizontalScrollPolicy="off" verticalScrollPolicy="off" left="8" top="8">
                <mx:Image source="@Embed(source='../uGUIstatuses16x16.transparent.png')" left="{data.statusOffset*-16}" top="0"/>
        </mx:Canvas>
        <mx:borderStyle>solid</mx:borderStyle>
        <mx:cornerRadius>5</mx:cornerRadius>
        <mx:borderThickness>1</mx:borderThickness>
        <mx:Text text="{data.torrentName}|{data.statusCode}|{data.statusOffset*-16}|{data.progress}" left="28" top="8"/>
        <mx:Text text="{data.label}" left="28" top="24"/>
        <mx:ProgressBar
                minimum="0"
                maximum="1000"
                height="12"
                width="49%"
                bottom="8"
                right="8"
                label="%3%%"
                labelPlacement="center"
                mode="{ProgressBarMode.MANUAL}"
                id="pbar"
                creationComplete="{this.pbar.setProgress(uint(data.progress),1000);}"
                direction="right"/>
</mx:Canvas>


Tim SharK 02.09.2009 11:32

Это распространенная проблема с ItemRender'ами. При каждой прокрутке обновляется data. А пока элементы не видны, их и не существует, поэтому onCreationComplete тут не единственный способ. Тут получается как-бы асинхронная работа этого прогресс бара с data. Попробуй задавать this.pbar.setProgress(uint(data.progress),1000) при других эвентах (попробуй разные). На худой конец попробуй следить за тем, какие элементы видны в данный момент и их прогресс бары обновлять. Но это довольно нудная работа.

Давненько с флексом не ковырялся, но эти проблемки помню хорошо ).


Часовой пояс GMT +4, время: 17:23.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.