Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.12.2016, 22:07
Attos вне форума Посмотреть профиль Отправить личное сообщение для Attos Найти все сообщения от Attos
  № 1  
Ответить с цитированием
Attos

Регистрация: Aug 2015
Сообщений: 26
По умолчанию Снова DataGrid + CellRenderer extends UILoader

Привет всем!
Столкнулся с проблемой в DataGrid, когда делаю свой тип столбца, с загрузкой изображения.

Пользуюсь стандартным классом-примером, встречающимся на многих сайтах

Код AS3:
    public class LoaderCellRenderer extends UILoader implements ICellRenderer {
        protected var _data:Object;
        protected var _listData:ListData;
        protected var _selected:Boolean;
		protected var clip:MovieClip;
        public var dataIndex:Object;
 
        /**
         * Constructor.
         */
        public function LoaderCellRenderer():void {
            super();
            addEventListener(IOErrorEvent.IO_ERROR, errorHandlerIOErrorEvent);
        }
 
        private static function errorHandlerIOErrorEvent(event:IOErrorEvent):void {
        }
 
        public function get data():Object {
            return _data;
        }
        public function set data(d:Object):void {
//urlPath - ссылка на изображение
			if(_data != d && source != d.urlPath)
			{
           		_data = d;
                source = d.urlPath;
                dataIndex = d.index;
			}
 
        }
 
        /**
         * Gets or sets the cell's internal _listData property.
         */
        public function get listData():ListData {
            return _listData;
        }
        /**
         * @private (setter)
         */
        public function set listData(value:ListData):void {
            _listData = value;
            invalidate(InvalidationType.DATA);
            invalidate(InvalidationType.STATE);
        }
 
        /**
         * Gets or sets the cell's internal _selected property.
         */
        public function get selected():Boolean {
            return _selected;
        }
        /**
         * @private (setter)
         */
        public function set selected(value:Boolean):void {
            _selected = value;
            invalidate(InvalidationType.STATE);
        }
 
        /**
         * Sets the internal mouse state.
         */
        public function setMouseState(state:String):void {
        }
    }
Возникает совершенно непонятная проблема: когда этот столбец находится в гриде не первым, то метод set data вызывается почти при каждом смещении скролла + он последовательно меняет строки, т.е., допустим, прокрутили скрол на 1 элемент и первая строка поменялась в этом метода с нулевой, 2я с 1й, 3я со 2й и т.д. Поэтому UILoader срабатывает каждый раз и все строки мигают! Происходит загрузка изображения при каждой прокрутке и изображения мигают.
Если же этот столбец поставить первым, то в этом методе данные меняются не все при каждой прокрутке, а лишь крайние, т.е. нулевая строка исчезла - попали в метод и добавили 9ю (крайнюю снизу), т.е. все данные не меняются и изображения не мигают.
Кто-нибудь сталкивался с таким?

Старый 11.12.2016, 02:13
Attos вне форума Посмотреть профиль Отправить личное сообщение для Attos Найти все сообщения от Attos
  № 2  
Ответить с цитированием
Attos

Регистрация: Aug 2015
Сообщений: 26
Ау! Неужели ни у кого в гриде картинки не моргают?

Старый 11.12.2016, 16:57
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 3  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Да промто никто такими вещами не пользуется, обычно все самописное

Добавлено через 1 минуту
кстати

Код AS3:
public function set data(d:Object):void {
//urlPath - ссылка на изображение
			if(_data != d && source != d.urlPath)
			{
           		_data = d;
                source = d.urlPath;
                dataIndex = d.index;
			}
 
        }
_data != d - беcсмысленное условие. new Object() != new Object()
__________________
Марк Tween

Старый 11.12.2016, 21:58
Attos вне форума Посмотреть профиль Отправить личное сообщение для Attos Найти все сообщения от Attos
  № 4  
Ответить с цитированием
Attos

Регистрация: Aug 2015
Сообщений: 26
Самописное в смысле что, лоадеры для отображения картинок в гриде? Или сами таблицы?
А как еще можно загрузить в ячейку столбца картинку? Приходится же наследоваться для этого от ICellRenderer , а от этого появляются уже эти странно срабатывающие методы set/get data и listData..

Старый 11.12.2016, 22:59
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 5  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Самописные гриды имеется ввиду, сами таблицы. Проще самому все сделать, и быстрее и надежнее, чем переписывать чужое.
__________________
Марк Tween

Старый 15.12.2016, 22:06
Attos вне форума Посмотреть профиль Отправить личное сообщение для Attos Найти все сообщения от Attos
  № 6  
Ответить с цитированием
Attos

Регистрация: Aug 2015
Сообщений: 26
Цитата:
Сообщение от in4core Посмотреть сообщение
Самописные гриды имеется ввиду, сами таблицы. Проще самому все сделать, и быстрее и надежнее, чем переписывать чужое.
О, интересно, а как можно самописные гриды делать? Они совсем с нуля делаются или какие-нибудь стандартные элементы все-таки используются? Можете хоть примерно направить куда-то смотреть?)

Старый 18.12.2016, 17:27
Партизан вне форума Посмотреть профиль Отправить личное сообщение для Партизан Найти все сообщения от Партизан
  № 7  
Ответить с цитированием
Партизан
 
Аватар для Партизан

блогер
Регистрация: Nov 2007
Адрес: Almaty, Moscow
Сообщений: 396
Записей в блоге: 5
Отправить сообщение для Партизан с помощью Skype™
Попробуйте грузить картинку в отдельном классе из которого вы будете забирать ее уже загруженной. Т.е. данные в ячейку должны попадать уже готовые для отображения.

Старый 19.12.2016, 00:30
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 8  
Ответить с цитированием
in4core
[+4 06.05.14]
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Attos - в смысле как можно? А как можно ММОРПГ написать на флеше? Просто довольно странный вопрос. Средства в ас3 есть для написания почти любой вещи, а что касается UI так вообще проблем нет. Посему Ваш вопрос непонятен. Если Вы новичок во всем этом, тогда одно - тогда проще готовые использовать, а если опытный пользователь - то пишется саморучно.
__________________
Марк Tween

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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