PDA

Просмотр полной версии : Обратиться ко всем элементам массива?


repz
20.11.2007, 21:17
Например есть массив:
var massiv = new Array(a1, a2)

for (i=0; i<massiv.length; i++) {
massiv[i].........massiv[i] - обращается к определенному элементу i, а можно ли обратиться ко всем сразу?

chingachgoog
20.11.2007, 21:22
А что вы собираетесь делать дальше? Что значит "обратиться"?

repz
20.11.2007, 21:23
Дальше мне надо к ним применить одно и то же действие одновременно.

chingachgoog
20.11.2007, 21:24
какое действие?

Ostgur
20.11.2007, 21:26
А этого действия случайно не предусмотрено изначально? :D
тут, например:
ActionScript 2.0 Language Reference(F1) -> ActionScript classes > Array

repz
20.11.2007, 21:32
Например - enabled, можно конечно и так a1.enabled=a2.enabled=false;, а если их 300?

Ostgur
20.11.2007, 21:36
да простят меня все, но попробуй:

massiv.enabled = false;

repz
20.11.2007, 21:38
То есть по Вашему я не пробывал, не работает!
Главное трейс показывает все элементы массива, а вот работать с ними не хочет.

Ostgur
20.11.2007, 21:50
интересно, действительно, есть же какой-то сопособ типа forEach, точно уверен, но в приницпе он всё равно будет равнозначен этому:

var massiv:Array = new Array(a1,a2);

function allArr(enable){
for (var i = 0; i<massiv.length; i++) {
massiv[i].enabled = enable;
}
}

allArr(0);

repz
20.11.2007, 21:58
Не пашет!

Ostgur
20.11.2007, 22:03
а вот этого быть не может, исходник в доказательство :)

а вообще проблема решена, просто нам надо внимательнее читать хелп :D

for (num in massiv) {massiv[num].enabled = false;}


удачи ;)

repz
20.11.2007, 22:13
МММ, как бы енто повесить на релисе?

Ostgur
20.11.2007, 22:14
BUTTTTTTTON.onRelease = function(){
for (num in massiv) {massiv[num].enabled = false;}
}

но в конкретном случае лучше так, код для 1 кадра:

massiv = new Array(a1, a2);

for (num in massiv) {massiv[num].onRelease = function(){
for (num in massiv) {massiv[num].enabled = false;}
}}

repz
20.11.2007, 22:19
Спасибо, работает, только мне кажется обсчитывает долго (подтормаживает).

Ostgur
20.11.2007, 22:20
проблема легко решается покупкой нового компьютера :)

repz
20.11.2007, 22:21
))) улыбнуло)) sony vaio core 2 duo 2gb SDRAM

Ostgur
20.11.2007, 22:22
у меня хуже, но нет ни одного тормоза при проверке

repz
20.11.2007, 22:22
Это у мя операционка перегружена скорее всего, еще раз спасибо)

chingachgoog
21.11.2007, 01:24
Например - enabled, можно конечно и так a1.enabled=a2.enabled=false;, а если их 300?

Какой еще enabled в массиве???
Массив будет либо содержать булевую величину (1 или 0), либо будет содержать ссылку на объект (мувик, кнопку), но массив не может содержать ссылку на свойство объекта.


а вообще проблема решена, просто нам надо внимательнее читать хелп

for (num in massiv) {massiv[num].enabled = false;}



Та же дыня только вид сбоку


for (i=0; i<massiv.length; i++) {massiv[i].........massiv[i]}



А вопрос был:


- обращается к определенному элементу i, а можно ли обратиться ко всем сразу?

repz
21.11.2007, 11:07
Да нет, это как раз то, что мне было нужно, обратится к объекту (мувику), т.е. ко всем сразу.

chingachgoog
21.11.2007, 12:18
не понял, это тот же цикл for... идет перебирание массива по одному элементу, а не обращение ко всему массиву.
Т.е. ваш начальный код и код Ostgur - это по сути одно и тоже :)

Ostgur
21.11.2007, 12:49
обращение ко всему массиву — и есть перебирание всех элементов в любом случае, просто нужен был наиболее простой код :D

chingachgoog
28.11.2007, 13:38
Есть случаи когда не надо все перебирать
Например

myArray=[]

всем элементам массива присвоит значение undefined :)

telit
28.11.2007, 13:45
a1, a2 должны быть мувиклипами!
Упс :) не заметил вторую страничку :D