Цитата:
|
Сообщение от __etc
Квадратные скобки неудобны никогда. Их количество не должно превышать одной штуки на подобный блок кода.
|
Ну допустим, принимаю как аксиому. Теперь осталось только сказать почему. Тогда, возвращаясь к примеру, как реализовать функцию изменяющую, например, альфу у блока объектов находящихся в муве контейнере "mc" ? Опять же для примера - искомому 100% остальным - 75.
Я написал ее так (простим мне ламеру использование _root всуе):

Код:
function func(x,y){
// Искомый тайл
_root.mc["tile" +x+"_"+y]._alpha=100 ;
// Тайлы по кресту (изометрия)
_root.mc["tile" +(x-1)+"_"+(y)]._alpha=75;
_root.mc["tile" +(x+1)+"_"+(y)]._alpha=75;
_root.mc["tile" +(x)+"_"+(y-1)]._alpha=75;
_root.mc["tile" +(x)+"_"+(y+1)]._alpha=75;
// Тайлы по диагоналям (изометрия)
_root.mc["tile" +(x-1)+"_"+(y-1)]._alpha=75;
_root.mc["tile" +(x-1)+"_"+(y+1)]._alpha=75;
_root.mc["tile" +(x+1)+"_"+(y-1)]._alpha=75;
_root.mc["tile" +(x+1)+"_"+(y+1)]._alpha=75;
}
А как надо было?
Цитата:
Leezard вы усложняете себе жизнь, ссылками намного легче работать, их намного легче проверять и при желании их можно назвать как надо а не "tile" +(x-1)+"_"+(y).
iNils и __etc пытаются вам объяснить это, а вы уперлись и отказываетесь понимать, если вы ждете от них что они разжуют и плюнут перевареную пищу вам в рот, то недождетесь =) поищите по форуму, зайдите на flash-ripper.com и посмотрите что пишут люди которые с флэшом уже даже не с пятой а 4-3 версии.
|
Я не упираюсь ни в коем случае, мало того, я абсолютно согласен, что ссылками работать очень удобно, мало того я с ними работаю, кроме того практически всегда
Но, я привожу пример конструкции, где по моему личному, абсолютно не проффесиональному, мнению, использования [], весьма удобно. И в ответ, вместо конкретики или хотя бы объяснения в двух словах (не оптимально по скорости, приводит к багам...) получаю фразы типа:
Цитата:
|
Leezard, вы говорите не понимая о чем. Ваш подход это вчерашний день...
|
Цитата:
|
Квадратные скобки неудобны никогда. Их количество не должно превышать одной штуки на подобный блок кода.
|
Цитата:
|
Leezard вы усложняете себе жизнь
|
Честное слово, я не хочу спорить, я просто не понимаю, почему "никогда", "вчерашний день", "не более одной штуки".
Есть конкретный, очень короткий (см.функцию выше) пример. Покажите как это можно сделать короче, быстрей и понятней.
Поскольку я хочу писать код в стиле завтрашнего дня, на AS2 вчерашнего, я попробую разжевать для себя сам, поправьте меня...
Создаем объекты с именами "tile1","tile2",..."tile900" для локации (карты)
30х30.
Типа так:
---Создаем---

Код:
var counter=1;
var names=[];
for(var i=1;i<=30;i++){
names[i]=[];
for(var j=1;j<=30;j++){
counter++;
//[] - зло, но как создать "собранный" линк? set? eval?
set("tile"+counter,mc.attachMovie("tiles","anyname"+counter,someDepth,{x:i,y:j}))
//согласно совету iNils воодим масив для хранения имен, а по сути соответствий координаты - мувики.
names[i][j]="tile"+counter;
}
}
Если писать неправильно то имеем следующее:

Код:
for(var i=1;i<=30;i++){
for(var j=1;j<=30;j++){
mc.attachMovie("tiles","tile"+i+"_"+j,someDepth,{x:i,y:j}))
}
}
---Обращение к блокам тайлов---

Код:
function func(x,y){
// Как найти искомый тайл?
//по умному тут у нас должно быть что-то вида ссылка._alpha=100
//и мы даже знаем как эта ссылка обзывается - name[x][y]
// но что делать дальше, я честно говоря не знаю
// я могу записать в виде _root[name[x][y]].alpha=100
// но это опять те же квадратные скобки, мало того еще и с упоминанием рута.
}
Вопросы которые меня терзают прямо сейчас:
Какие еще методы обращения к свойствам объектов существуют?
Каким образом я могу реализовать ссылка._alpha=100 без квдратных скобок, где ссылка - сложносочиненный стринг.
Зачем превращать квадратное, в длинное, для того чтобы затем сделать опять квадратным?