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

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

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

Регистрация: Feb 2011
Адрес: x=0;у=0; да да, я в 2D))
Сообщений: 17
По умолчанию массив или не массив?

в общем,есть такая задача: нужно,чтобы при загрузке swf сцена наполнялась небольшими квадратиками,таким образом,чтобы полностью заполнить всю сцену. у меня должно получиться этакое поле 10 на 10.итого сто квадратиков. в дальнейшем нужно будет обращаться к каждому из этих квадратиков и некоторые из них должны иметь отдельные от других свойства. как реализовать? сделать массив из ста элементов.где каждый элемент это квадратик? и как указать порядок добавления на сцену таким образом как я написал? если у меня 10 на 10, то получается что у тех квадратиков что будут находиться в нижнем ряду, позиция по y=0 а позиция по х тоже вполне вычисляема ( прибавляем ширину квадрата и получаем х) когда количество элементов добавляемых на уровень Y=0 будет равной 10, то к Y прибавляем число,на которое хотим поднять второй уровень. как то так да? помогите сообразить

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

Регистрация: Jul 2008
Сообщений: 107
Код AS3:
import flash.events.MouseEvent;
 
var box:Box;
addEventListener(MouseEvent.CLICK, onClick);
 
for (var column:int=0; column<10;column++) {
	for (var row:int=0; row<10;row++) {
		box = new Box();
		box.name = String(column) + String(row);
		box.x = (box.x + box.width)*column;
		box.y = (box.y + box.height)*row;
		addChild(box);
	}
}
 
function onClick(event:MouseEvent):void
{
	trace(event.target.name);
}

Старый 03.02.2011, 23:57
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 3  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
По размещению:

Код AS3:
	public class MySquare extends MovieClip
	{
		// Количество по вертикали и горизонтали
		private const QUANTITY_V:int = 10;
		private const QUANTITY_H:int = 10;		
 
		// Здесь задаём размеры
		private const SIZE_V:int = 20;
		private const SIZE_H:int = 20;
 
		// Собственно массив
		private var square:Array = [];
 
		public function MySquare()
		{
				// Просто передаём в параметры количество
				CreateAndArrange(QUANTITY_V,QUANTITY_H);
		}
 
		public function CreateAndArrange(v:int, h:int)
		{
			// Индексы
			var ti:int = 0;
			var tj:int = 0;
			var ij:int = 0;
 
			for (var i:int=0; i<QUANTITY_V; ++i)
			{
				for (var j:int=0; j<QUANTITY_H; ++j)
				{
					// Для лучшего вида
					// Сразу просчитываем координаты
					ti = (i*SIZE_V)+(SIZE_V);
					tj = (j*SIZE_H)+(SIZE_H);
 
					// Заталкиваем в массив
					// В конструктор mcSquare передаем координаты,
					// и размеры очередного квадрата
					square.push(new mcSquare(ti,tj,SIZE_V,SIZE_H));		 
 
					// Помещаем на форму
					addChild(square[ij++]);
				}
			}
		}
	}
Вот на всякий случай конструктор класса mcSquare

Код AS3:
		public function mcSquare(x:int, y:int, v:int, h:int)
		{
			// constructor code
			this.x = x;
			this.y = y;
 
			this.width = h;
			this.height = v;
		}

Старый 04.02.2011, 11:43
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 4  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
Никогда не понимал, зачем в подобных ситуациях использовать вложенные циклы, когда достаточно одного?

Старый 04.02.2011, 12:29
Stropik вне форума Посмотреть профиль Отправить личное сообщение для Stropik Найти все сообщения от Stropik
  № 5  
Ответить с цитированием
Stropik

Регистрация: Dec 2010
Сообщений: 4
Да можно и вообще без циклов...

Старый 04.02.2011, 12:31
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 6  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Как по мне, то вложенные циклы нагляднее в коде,
тем более когда подразумевается матрица

- но я хотел бы увидеть код без вложенных циклов

Цитата:
Сообщение от Stropik Посмотреть сообщение
Да можно и вообще без циклов...
- нет, я всё же хотел бы увидеть код без циклов))

Старый 04.02.2011, 12:34
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 7  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
Про "без циклов" я ничего не говорил, я говорил про "без вложенных циклов". Пример еще нужен?

Старый 04.02.2011, 12:35
necro вне форума Посмотреть профиль Отправить личное сообщение для necro Найти все сообщения от necro
  № 8  
Ответить с цитированием
necro

Регистрация: Jan 2011
Сообщений: 2
Цитата:
Сообщение от strangedk Посмотреть сообщение
- нет, я всё же хотел бы увидеть код без циклов))
написать 100 раз подряд добавление элемента в массив

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

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Да, конечно, всем будет интересно посмотреть.

В целом понятно как оно, но код лишним не бывает.

Старый 04.02.2011, 13:30
arkadattx вне форума Посмотреть профиль Отправить личное сообщение для arkadattx Найти все сообщения от arkadattx
  № 10  
Ответить с цитированием
arkadattx

Регистрация: Apr 2010
Сообщений: 219
Как-то так:
Код AS3:
var count:int=100;
var row:int=10;
for(var i:int=0, h:int=0, v:int=0; i<count; i++){
	h=i%row;
	v=uint(i/row);
	trace(v,h);
}

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

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

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


 


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


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