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

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

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

Регистрация: Mar 2016
Сообщений: 34
По умолчанию Видимость тайлов строки, столбца

Помогите решить одну проблему. Я создаю поле как показано на рисунке.
Название: test.jpg
Просмотров: 373

Размер: 6.6 Кб
Делаю видимость поля с помощью alpha 20 %. При щелчке на любом тайле поля если этот тайл в массиве равен единицы. То видимость становится 100 %. Единица превращается в двойку. Как сделать так, чтобы по горизонтале если все тайлы определенной строки (там где раньше была единица стала двойка в массиве) alpha равны 100 %. То все тайлы этой строки автоматически становились alpha 100 %. Пример:
Название: test2.jpg
Просмотров: 368

Размер: 6.3 Кб
То же самон и со столбцами если все тайлы столбца где в массиве двойка, alpha равны 100 %. То все тайлы столбца становились alpha 100 %.
Название: test3.jpg
Просмотров: 382

Размер: 6.4 Кб
Функция test_full у меня уже есть где бы происходили проверки на заполненность тайлов. Но как её написать не знаю. Внизу представлен весь код.

Код AS1/AS2:
var level = [[0,1,0,0,0,1,0], 
			 [0,1,0,0,1,1,1], 
			 [0,1,0,0,1,1,1], 
			 [1,1,1,0,1,1,1],
			 [1,1,1,1,1,1,1], 
			 [1,1,1,1,1,1,1], 
			 [1,1,1,1,1,1,1],
			 [1,1,1,0,1,1,1],
			 [0,1,1,0,1,1,1],
			 [0,0,0,0,1,1,1],
			 [0,0,0,0,1,1,1],
			 [0,0,0,0,1,1,1],
			 [0,0,0,0,0,1,0]];
 
function pole()
{
	for (var i= 0; i < level.length; ++i)
	{
		for (var j = 0; j < level[i].length; ++j)
		{
			_root.attachMovie("tile","t"+i+"_"+j,_root.getNextHighestDepth());
			_root["t"+i+"_"+j]._alpha = 20;
			_root["t"+i+"_"+j].idi = i;
			_root["t"+i+"_"+j].idj = j;
			_root["t"+i+"_"+j].onPress = onP;
			_root["t"+i+"_"+j]._x = 200+20*i;
			_root["t"+i+"_"+j]._y = 200+20*j;
		}
	}
}
 
function onP()
{
	if(level[this.idi][this.idj] == 1)
	{
		level[this.idi][this.idj] = 2;
		this._alpha = 100;
	}
 
	test_full(this.idi,this.idj);
 
}
 
function test_full(idi, idj)
{
 
}
pole();

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

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Амммм........
Я бы так выразился....
Насколько бессвязна речь и постановка задачи, настолько сложно этот сумбур алгоритмизировать.
Сведите свои высказывания в 2-3 фразы с минимумом слов и получится алгоритм

Некий хинт:

Код AS1/AS2:
			var aTile = _root.attachMovie("tile","t"+i+"_"+j,_root.getNextHighestDepth());
			aTile._alpha = 20;
			aTile.idi = i;
			aTile.idj = j;
			aTile.onPress = onP;
			aTile._x = 200+20*i;
			aTile._y = 200+20*j;
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 17.07.2016, 09:50
Alexey25 вне форума Посмотреть профиль Отправить личное сообщение для Alexey25 Найти все сообщения от Alexey25
  № 3  
Ответить с цитированием
Alexey25

Регистрация: Mar 2016
Сообщений: 34
Я решил посмотреть в интернете похожие примеры, чтобы лучше объяснить, что я хочу и нашел пример японских кроссвордов вот он . Как видно из рисунка в первой строке есть один квадрат который надо закрасить если в этой строке больше нет квадратов, которые надо закрасить в черный цвет, то все соседние квадраты ставятся крестики. У меня тоже самое в массиве есть единицы. При щелчке единицы становятся двойками. И нужно сделать проверку в строке. Если в строке одни двойки то вся строка должна стать alpha 100 %. Весь код предоставлен в первом посте.

Старый 17.07.2016, 10:59
dark256 вне форума Посмотреть профиль Отправить личное сообщение для dark256 Посетить домашнюю страницу dark256 Найти все сообщения от dark256
  № 4  
Ответить с цитированием
dark256
 
Аватар для dark256

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Не понял, в чем у вас таки проблема
Подсчитать кол-во двоек в столбце или строке и сравнить это кол-во с длинной столбца-строки?

Код AS1/AS2:
function test_full( _i, _j ){
 
	var testRow = 0
	for (var j = 0; j < level[_i].length; j++ ) if ( level[_i][j] == 2 ) testRow++ 
	if ( testRow == level[_i].length ){
		for (var j = 0; j < level[_i].length; j++){ _root[ "t"+_i+"_"+j ]._alpha = 100 }
	}
 
	var testCol = 0
	for (var i = 0; i < level.length; i++) if ( level[i][_j] == 2 ) testCol++ 
	if ( testCol == level.length ){
		for (var i = 0; i < level.length; i++){ _root[ "t"+i+"_"+_j ]._alpha = 100 }
	}
}
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

Старый 17.07.2016, 15:31
Alexey25 вне форума Посмотреть профиль Отправить личное сообщение для Alexey25 Найти все сообщения от Alexey25
  № 5  
Ответить с цитированием
Alexey25

Регистрация: Mar 2016
Сообщений: 34
Более менее разобрался. Теперь нужно посчитать сколько в каждой строчке единичек и записать этот результат в массив например в массиве level видно, что там 7 строк в каждой строке присутствуют единицы и в итоге должно быть записано 7 элементов в массив. var countCol = [5,9,6,3,11,12,11]; примерно так. Подскажите пожалуйста как это сделать?

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

блогер
Регистрация: Apr 2008
Адрес: SPb
Сообщений: 3,718
Записей в блоге: 5
Отправить сообщение для dark256 с помощью ICQ Отправить сообщение для dark256 с помощью Skype™
Собственно точно так же.
Сравниваете не с 2 а с 1 и newArray[i][j] = сколько насчитано единичек
__________________
FLASHER.MAP SOUNDSTAGE / CS3 / AS2

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

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

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


 


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


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