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

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

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

Регистрация: May 2010
Сообщений: 14
Question Вопрос по массивам

Приветствую всех!
Вопрос такой: Как можно проверить условие, которое выполняется одновременно со всеми объектами в массиве?
Не поняли, вот пример:
у нас есть три объекта obj1, obj2, obj3, все они добавлены в массив. У каждого из объектов есть свойство prop, тип boolean (хотя это не важно).
так вот, мне надо проверить условие выполнения всех этих свойств, ну, например, в true.

т.е.

Код AS1/AS2:
if(obj1.prop && obj2.prop && obj3.prop) {что-то там...}
так вот, как это можно заменить, используя массив? просто объектов может быть немыслимое кол-во, а надо, чтобы выполнялись одновременно все условия.

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Код AS1/AS2:
var obj1:Object = { prop:true };
arr.push(obj1);
var obj2:Object = { prop:true };
arr.push(obj2);
var obj3:Object = { prop:true };
arr.push(obj3);
 
testProp();
 
function testProp()
{
	var totalProp:Boolean ;
 
	for (i in arr)  //по всем элементам массива
	{
 
		var obj:Object = arr[i];
 
		if (totalProp == undefined) 
		{
			totalProp = obj.prop;
		}
		else
		{
			totalProp = totalProp && obj.prop;
		}
	}	
 
	if (totalProp)
	{
		trace('что-то там');
	}
}
__________________
Идите первым!


Последний раз редактировалось mooncar; 21.12.2011 в 23:33.
Старый 22.12.2011, 20:06
KirillWd вне форума Посмотреть профиль Отправить личное сообщение для KirillWd Найти все сообщения от KirillWd
  № 3  
Ответить с цитированием
KirillWd

Регистрация: May 2010
Сообщений: 14
да, это работает. но если менять свойство динамически, значение totalProp не меняется.
как это исправить?

Старый 22.12.2011, 20:56
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Оно поменяется после вызова testProp(). Как только поменяли динамически какое-то свойство, вызывайте эту функцию.
Либо вызывайте непосредственно перед использованием totalProp.

А ваш вопрос с неопределенным количеством элементов массива решается с помощью цикла for (i in array).
__________________
Идите первым!


Последний раз редактировалось mooncar; 22.12.2011 в 21:02.
Старый 22.12.2011, 21:26
KirillWd вне форума Посмотреть профиль Отправить личное сообщение для KirillWd Найти все сообщения от KirillWd
  № 5  
Ответить с цитированием
KirillWd

Регистрация: May 2010
Сообщений: 14
Я совсем криворукий.
Вот щито такое! Как переделать?
Вложения
Тип файла: rar game.rar (9.3 Кб, 27 просмотров)

Старый 22.12.2011, 21:44
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Исходник-исходником, а вот что вы хотите и что у вас не получается?

PS. Там у вас 3 мувика с одинаковым именем mc1 на сцене - поправьте для начала, так не должно быть.
__________________
Идите первым!

Старый 23.12.2011, 01:26
KirillWd вне форума Посмотреть профиль Отправить личное сообщение для KirillWd Найти все сообщения от KirillWd
  № 7  
Ответить с цитированием
KirillWd

Регистрация: May 2010
Сообщений: 14
вот смотрите, я хочу, чтобы переменная total была в значении false до тех пор, пока хотя бы одно св-во какого-то объекта в массиве не стала true. Соответствующее св-во принимает знач. true, когда мышь касается окр-ти.

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

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Код AS1/AS2:
var myArray:Array = Array(false,true,false);
for(i=0; i<myArray.length; i++){
	if(myArray[i] > false){
		result = true;
		break;
	}
}; 
trace(result);
__________________
Дети не должны знать о своих родителях

Старый 23.12.2011, 17:12
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
Код AS1/AS2:
var blocks:Array = [];
var total:Boolean;
 
function circles(obj){
	blocks.push(obj);
	obj.collision = function(x, y)	{
 
		this.distX = (x - this._x) * (x - this._x);
		this.distY = (y - this._y) * (y - this._y);
		this.dist = this.distX + this.distY;
		this.hit = Math.sqrt(this.dist) <= this._width / 2;
 
	}
}
 
onEnterFrame = function(){ 
 
	total = false;
	for (l in blocks)
	{
		circle = blocks[l];
		circle.collision(_xmouse, _ymouse);
		total = total || circle.hit;
	}
 
	txt1.text = blocks[0].hit;
	txt2.text = blocks[1].hit;
	txt3.text = blocks[2].hit;
	txt.text = total;
 
}

Старый 23.12.2011, 19:52
KirillWd вне форума Посмотреть профиль Отправить личное сообщение для KirillWd Найти все сообщения от KirillWd
  № 10  
Ответить с цитированием
KirillWd

Регистрация: May 2010
Сообщений: 14
спасибо большое всем.
код silin`а работает

Добавлено через 4 минуты
и Tails`a

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

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

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


 


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


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