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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.04.2011, 21:46
inozemcev вне форума Посмотреть профиль Отправить личное сообщение для inozemcev Найти все сообщения от inozemcev
  № 1  
Ответить с цитированием
inozemcev
[+ 1.0 08.10.14]
 
Аватар для inozemcev

блогер
Регистрация: Mar 2010
Адрес: x = stage.stageWidth/2 y= stage.stageHeight/2
Сообщений: 293
Записей в блоге: 2
По умолчанию можно ли обойтись одним циклом?

Есть такой код:

Код AS3:
 
                var arr:Array = [];			 
 
               	InfoBarData.getInstance().initialize();
 
		for (var i:int = 0; i < 9; i ++)
                {
                    var bitmapData:BitmapData = new BitmapData (170,40);
                    var matrix:Matrix = new Matrix ();
                    matrix.translate(0, -40*i);
                    bitmapData.draw(InfoBarData.getInstance(), matrix);
                    arr.unshift (bitmapData)
		}
 
		for (i = 0; i < 9; i ++)
		{
			(visibleItems[i] as InfoBarItem).setInfo (arr[i]);
		}
В двух словах создаю bitmapData определенного размера и разрезаю ее на 9 частей (создаю девять экземпляров bitmapData) а потом применяю их к компонентам меню. Проблема в том, что экземпляры создаются в обратном порядке из за этого приходится создавать лишний массив запихивать экземпляры в обратном порядке и потом в отдельном цикле снова обходить массив с компонентами меню для использования экземпляров.

Если абстрактно то есть две очереди [1,...,9] и [9,...,1] как за один цикл сложить значения обоих массивов, с условием, что у одного массива значения берутся в начале списка а у другого с конца ?!

p.s Забываю благодарить авторов за их компетентные комментарии, поэтому заранее благодарю за ответ.

Добавлено через 13 минут
Решил задачу, но очень топорно просто сдвигая трансформацию, хотелось бы какое - нибудь классическое решение увидеть:

Код AS3:
                for (var i:int = 0; i < 9; i ++)
                {
                    var bitmapData:BitmapData = new BitmapData (170,40);
                    var matrix:Matrix = new Matrix ();
                    matrix.translate(0,-320 + 40*i);
                    bitmapData.draw(InfoBarData.getInstance(), matrix);
                   (visibleItems[i] as InfoBarItem).setInfo (bitmapData);
		}

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

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Как вариант - ввести индекс (к примеру, j), который в каждом цикле будет инкрментиться и на его значение изменять показатель основного индекса (i) в зависимости от длины массива.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

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

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

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


 


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


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