![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: May 2010
Сообщений: 14
|
Приветствую всех!
Вопрос такой: Как можно проверить условие, которое выполняется одновременно со всеми объектами в массиве? Не поняли, вот пример: у нас есть три объекта obj1, obj2, obj3, все они добавлены в массив. У каждого из объектов есть свойство prop, тип boolean (хотя это не важно). так вот, мне надо проверить условие выполнения всех этих свойств, ну, например, в true. т.е. так вот, как это можно заменить, используя массив? просто объектов может быть немыслимое кол-во, а надо, чтобы выполнялись одновременно все условия. |
|
|||||
|
Модрон-ветеринар
|
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. |
|
|||||
|
Регистрация: May 2010
Сообщений: 14
|
да, это работает. но если менять свойство динамически, значение totalProp не меняется.
как это исправить? |
|
|||||
|
Модрон-ветеринар
|
Оно поменяется после вызова testProp(). Как только поменяли динамически какое-то свойство, вызывайте эту функцию.
Либо вызывайте непосредственно перед использованием totalProp. А ваш вопрос с неопределенным количеством элементов массива решается с помощью цикла for (i in array).
__________________
Идите первым! Последний раз редактировалось mooncar; 22.12.2011 в 21:02. |
|
|||||
|
Регистрация: May 2010
Сообщений: 14
|
Я совсем криворукий.
Вот щито такое! Как переделать? |
|
|||||
|
Модрон-ветеринар
|
Исходник-исходником, а вот что вы хотите и что у вас не получается?
PS. Там у вас 3 мувика с одинаковым именем mc1 на сцене - поправьте для начала, так не должно быть.
__________________
Идите первым! |
|
|||||
|
Регистрация: May 2010
Сообщений: 14
|
вот смотрите, я хочу, чтобы переменная total была в значении false до тех пор, пока хотя бы одно св-во какого-то объекта в массиве не стала true. Соответствующее св-во принимает знач. true, когда мышь касается окр-ти.
|
|
|||||
|
__________________
Дети не должны знать о своих родителях |
|
|||||
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; } |
|
|||||
|
Регистрация: May 2010
Сообщений: 14
|
спасибо большое всем.
код silin`а работает ![]() Добавлено через 4 минуты и Tails`a |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:42. |
|
|
« Предыдущая тема | Следующая тема » |
|
|