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

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

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

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
По умолчанию CustomList + Tween на 4 айтема с переиспользованием айтемов

Здравствуйте
Не могу подступиться правильно к решению следующей проблемы
Делаю кастомный лист (без использольания компонентов), в нем 4 видимых айтема
У него вместо сроллера 2 стрелочки, вниз-вверх перемещения списка. Перемещение айтемов происходить должно по 4 штуки сразу, причем, твином ! Когда пользователь доскроллировал список до конца, его нижний айтем должен упираться в низ маски даже если нечетное количество айтемов, или же оно не делится на 4 нацело.
Надо бы это сделать с переиспользованием созданных айтемов, вместо того чтобы создавать множество айтомов в списке.

Как я сделал:
Создал 8 айтемов - 4 видимых и 4 за границей нижней списка
При скроле списка вверх, те 4 айтема которые ушли вверх по окончании твина перемещаются под предидущие 4. Для них высчитываются ID-шки и обновляются данные, соответствующие их обновленным ID-шкам.
Все бы ничего, НО количество айтемов может быть и нечетным !!!
Как бы мне подсчитать все это ?
Возможно, кто-то уже делал подобное, натолкните на мысль пожалуйста

Вот часть кода
Код AS3:
private var totalVisible:int=4;
 
public function set bounds(rect:Rectangle):void
		{
			_bounds=rect;
			maskSprite.graphics.beginFill(0xFF0000,0.4);
			maskSprite.graphics.drawRect(_bounds.x,_bounds.y,_bounds.width,_bounds.height);
			maskSprite.graphics.endFill();
			//itemsSprite.mask=maskSprite;
		}
 
public function set dataProvider(collection:ArrayCollection):void
		{
			data=collection;
			for(i=0;i<totalVisible*2;i++)
			{
				listItem=new CustomListItem(i,"hotel",data.getItemAt(i)); // i = ID айтема
				itemsSprite.addChild(listItem);
				listItem.y=i*(listItem.height);
				totalVisibleItems.push(listItem);
			}
		}
 
public function itemsUp():void
		{
			for(i=0;i<totalVisibleItems.length;i++)
			{
				if(totalVisibleItems[i].y>_bounds.height)
				{
					totalVisibleItems[i].y-=totalVisible*(listItem.height)*2;
					totalVisibleItems[i].ID=totalVisibleItems[i].ID-totalVisible*2;
					totalVisibleItems[i].data=data.getItemAt(totalVisibleItems[i].ID);
				}
				itemNextY=totalVisibleItems[i].y+(listItem.height)*totalVisible;
				itemTween=new Tween(totalVisibleItems[i],"y",Strong.easeInOut,totalVisibleItems[i].y,itemNextY,tweenTime,true);
				itemTween.addEventListener(TweenEvent.MOTION_FINISH,itemTweenFinishHandler);
			}
		}
 
		public function itemsDown():void
		{
			for(i=0;i<totalVisibleItems.length;i++)
			{
				itemNextY=totalVisibleItems[i].y-(listItem.height)*totalVisible;
				itemTween=new Tween(totalVisibleItems[i],"y",Strong.easeInOut,totalVisibleItems[i].y,itemNextY,tweenTime,true);
				itemTween.addEventListener(TweenEvent.MOTION_FINISH,itemTweenFinishHandler);
			}
		}
 
		/////////////    handlers  ///////
		private function itemTweenFinishHandler(event:TweenEvent):void
		{
			if(event.target.obj.y<0)
			{
				event.target.obj.y+=(event.target.obj.height)*totalVisible*2;
				event.target.obj.ID=event.target.obj.ID+totalVisible*2;
				event.target.obj.data=data.getItemAt(event.target.obj.ID);
			}
		}
Я вот думаю, а не ошибся ли я, создавая 4 дополнительных невидимых айтема, а не 1


Последний раз редактировалось djyamato; 04.06.2011 в 22:29.
Старый 04.06.2011, 22:23
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 2  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
ну дополняй пустыми ячейками до своих четырех если нечетное. Самый топорный вариант, но мне кажется как раз для этой ситуации ок.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 04.06.2011, 22:29
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 3  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
ну дополняй пустыми ячейками до своих четырех если нечетное. Самый топорный вариант, но мне кажется как раз для этой ситуации ок.
Нет, к сожалению, неподходит

Старый 04.06.2011, 22:36
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 4  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Цитата:
Надо бы это сделать с переиспользованием созданных айтемов, вместо того чтобы создавать множество айтомов в списке.
А зачем переиспользовать? Типо экономия памяти?

Старый 04.06.2011, 22:44
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 5  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Ну раз не подходит тогда давай точнее постановку задачи.
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 05.06.2011, 00:56
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 6  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Цитата:
Сообщение от Bgg Посмотреть сообщение
А зачем переиспользовать? Типо экономия памяти?
айтемов может быть и 500 и 1000, думаю, даже если, visible=false это будет неэкономично для ресурсов, или я ошибаюсь?

Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
Ну раз не подходит тогда давай точнее постановку задачи.
Ну, как бы, все верно, вы хорошую мысль предлагаете, спасибо, разовью ее:
Есть у меня 9 айтемов, человек их скроллирует стрелками, дошел до 9й, если добавленные пустые айтемы увидит он это будет плохо.
9 айтемов, 3 раза нажатие вверх = 10,11,12 индексы (id-шки) у несуществующих но видимых айтемов, получается, что нужно расчитать величину смещения этих 4х айтемов чтобы не видно было 3х несуществующих ?


Последний раз редактировалось djyamato; 05.06.2011 в 01:10.
Старый 05.06.2011, 01:03
Bgg вне форума Посмотреть профиль Отправить личное сообщение для Bgg Найти все сообщения от Bgg
  № 7  
Ответить с цитированием
Bgg
 
Аватар для Bgg

Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
Смотря что за айтемы. Проверте сами, добавьте 1000 и посомтрите. Зачем придумывать сложную систему "экономии" ресурсов не зная нужна ли она?

Старый 05.06.2011, 01:13
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 8  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
Ну я бы не проверял, это действительно может быть напряжно. Так а почему дополнение пустыми не подходит?
__________________
Кто к нам с чем для чего - тот у нас того от того.

Старый 05.06.2011, 01:33
djyamato вне форума Посмотреть профиль Отправить личное сообщение для djyamato Посетить домашнюю страницу djyamato Найти все сообщения от djyamato
  № 9  
Ответить с цитированием
djyamato
 
Аватар для djyamato

Регистрация: Feb 2006
Сообщений: 884
Записей в блоге: 2
Отправить сообщение для djyamato с помощью ICQ Отправить сообщение для djyamato с помощью Skype™
Цитата:
Сообщение от Dukobpa3 Посмотреть сообщение
Ну я бы не проверял, это действительно может быть напряжно. Так а почему дополнение пустыми не подходит?
скролл возможен до последнего актуального айтема а не только по 4 штуки

Старый 05.06.2011, 01:36
Dukobpa3 вне форума Посмотреть профиль Отправить личное сообщение для Dukobpa3 Найти все сообщения от Dukobpa3
  № 10  
Ответить с цитированием
Dukobpa3
 
Аватар для Dukobpa3

блогер
Регистрация: Oct 2010
Адрес: Киев
Сообщений: 1,678
Записей в блоге: 12
Отправить сообщение для Dukobpa3 с помощью Skype™
ну блин тогда не пустые вконец добавить а заполненные в начало последней пачки продублировать ))

Тот же кран только в левой руке
__________________
Кто к нам с чем для чего - тот у нас того от того.

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

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

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


 


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


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