PDA

Просмотр полной версии : как обращаться к объекту, чье имя инстанции задано цифрой?


angeldark
25.06.2008, 15:28
как обращаться к объекту, чье имя инстанции задано цифрой? Только не говорите, что перезадать его в буквенном виде. у меня к этим номерам идет привязка кода

etc
25.06.2008, 15:32
Имя не может начинаться с цифры.

angeldark
25.06.2008, 15:50
а вот тут товарищ предложил использовать цифры вместо имени http://www.flasher.ru/forum/showthread.php?p=747344#post747344 и все работает.

Molecula
25.06.2008, 15:53
Столкнулся как-то с таким проектом.
8-ка ИДЕ ещё нормально относится к этому, а вот 9-ка уже матюгается на такое обзывание мувиков.
Не надо цифрой их обзывать.

angeldark
25.06.2008, 16:19
нашел как относительно просто исправить мой код с учетом вышесказанного: добавляем к инстанс неймам 1 букву спереди, а затем в коде с помощью substr вырезать цифры, к которым идет привязка кода. Всем спасибо.

Alex_beginner
25.06.2008, 16:45
Здравствуйте angeldark!

this.createEmptyMovieClip("1",10);
trace(this[1]); // выведет _level0.1

Почему так, если уж сильно хочется, не обращаться.

angeldark
25.06.2008, 17:13
черт, что-то я все равно как-то туплю почему вот такой код не работает?

for (i = 0; i < 87; i++) {
var j:String = "o" + i;
this._parent.j.gotoAndStop(1);
}
this.gotoAndStop(2);
все мувиклипы называются o0, o1, ..., o86 При переходе ко второму кадру они "выделяются". По идее этот код должен при нажатии на Х-ый мувиклип с номером оХ все остальные мувиклипы перевести в невыделенное состояние, однако этого не происходит. При этом если явно прописать в коде вместо j некий oY, то с этого oY выделение снимается. В чем мой баг?

crazyone
25.06.2008, 17:29
for (i = 0; i < 87; i++) {
var j:String = "o" + i;
this._parent[j].gotoAndStop(1);
}
this.gotoAndStop(2);

починил

Alex_beginner
25.06.2008, 17:30
angeldark!
this._parent.j.gotoAndStop(1);

некорректна.

Надо так:

this._parent[j].gotoAndStop(1)

Если сильно хочется цифр, создавайте мувы так:

for (var i:Number = 0; i<87;i++)
{
this.createEmptyMovieClip(i,this.getNextHighestDepth())
}


И обращение к ним через [] -

this[i]

Хочу предупредить, что в Вашем цикле последнее имя мува будет 86, а не 87.

angeldark
25.06.2008, 17:38
crazyone, Alex_beginner, спасибо

А может быть ответите на вопрос, который я задавал в другой теме, но там на него никто не ответил:
Подскажите пожалуйста где почитать о том, как приаттачить мувик в определенном месте без привязки к какому-нибудь объекту? А то уже нет времени искать по форуму.

crazyone
25.06.2008, 17:55
Нет, не ответим. Сформулируйте его корректнее, телепаты в отпуске.

Alex_beginner
25.06.2008, 18:33
angeldark!

Давайте разберемся. Если Вы хотите использовать метод attachMovie класса MovieClip, то вы обязаны сделать привязку к какому-либо объекту. Например, _root. Иного пути нет и вряд ли будет. Если же Вы хотите соорудить что-либо иное, плиз, "разжуйте" и выложите здесь подробно.

Жень Шень
25.06.2008, 20:27
как приаттачить мувик в определенном месте
Вот это определенное место ни что иное, как другой клип или _root (клип, но особенный). Это уже в AS3 появился конструктор клипов...

angeldark
26.06.2008, 20:04
Ну просто в случае привязки к объекту мувик появляется как бы внутри его, хоть и поверх. Нельзя ли как-то его вывести по координатам на рабочем поле без наличия того объекта, в котором он "появляется"?

Жень Шень
27.06.2008, 10:40
... Нельзя ли как-то его вывести по координатам на рабочем поле без наличия того объекта, в котором он "появляется"?
Привет!
Можно, если не предпологается изменения масштаба. Просто клип контейнер загоняется в 0,0. А присоедененный устанавливается по нужным координатам.
Если нужно масштабирование, то в тогда надо применять globalToLocal(), localToGlobal(). Но об этом в ХЭЛПе

Alex_beginner
27.06.2008, 13:17
Здравствуйте angeldark!
Нельзя ли как-то его вывести по координатам на рабочем поле без наличия того объекта, в котором он "появляется"?
А что такое рабочее поле?! Это безусловно тоже мувиклип _root, называемый главной временной шкалой. И так или иначе Вы будете привязываться к нему.

Да и уж не так страшно аттачить мувы к какому либо объекту - в функциональности Вы не потеряете ничего.:)

angeldark
28.06.2008, 03:51
Да и уж не так страшно аттачить мувы к какому либо объекту - в функциональности Вы не потеряете ничего.:)
прсто если нужно чтобы клип появлялся на пустом месте, то привязка к объекту здесь - минус) Ладно, попробую приаттачить к руту. только я так и не понял - как изменить координаты куда приаттачивается ролик? Пробовал написать как в хелпе после глубины размещения (насколько я понял) {_x.100,_y.100}, мувик все равно появляется в 0,0 координатах объекта, к которому выполняется привязка. Может я все же где-то туплю?

Alex_beginner
28.06.2008, 17:17
прсто если нужно чтобы клип появлялся на пустом месте, то привязка к объекту здесь - минус)

Все же я Вас не понимаю. Зачем нужно создавать клип на пустом месте?

только я так и не понял - как изменить координаты куда приаттачивается ролик?

Порядок тут такой:
1. Атачите клип (скажем задавая ему имя myClip) к _root;
2. Здаете для myClip координаты левого верхнего его угла используя синтаксис:
myClip._x = 100;
myClip._y = 100;

И все. Удачи.

Wolsh
29.06.2008, 11:51
angeldark, не {_x.100,_y.100}, а правильно {_x:100,_y:100}

angeldark
30.06.2008, 22:18
angeldark, не {_x.100,_y.100}, а правильно {_x:100,_y:100}
это я здесь неправильно написал, а в проге так как написали вы, и ей на это по барабану

Зачем нужно создавать клип на пустом месте?
ну у вас же при открытии нового окна оно же появляется не на месте курсора или не на месте какого бы то ни было другого окна или иконки, а как вы изволили выразиться "на пустом месте"

1. Атачите клип (скажем задавая ему имя myClip) к _root;
2. Здаете для myClip координаты левого верхнего его угла используя синтаксис:
myClip._x = 100;
myClip._y = 100;
так работатет, а вот в одну строчку нет запроса? т.е. не 3 команды (поместить, изменить положение по х, затем по y), а в одну?

Alex_beginner
30.06.2008, 22:39
angeldark!

ну у вас же при открытии нового окна оно же появляется не на месте курсора или не на месте какого бы то ни было другого окна или иконки, а как вы изволили выразиться "на пустом месте"

Ну, во первых выражение "на пустом месте" применили впервые Вы:

прсто если нужно чтобы клип появлялся на пустом месте, то привязка к объекту здесь - минус)

Поэтому я пользуюсь Вашей терминологией.

Во-вторых, повторюсь. Невозможно создавать мувиклипы на "пустом месте", так же как не может быть из ничего всего. Есть корневой "мувиклип" - _root на нем все и строиться в Флеше. Не надо относиться к мувиклипам обязательно как к видимым объектам. Мувиклипы это условность, выражающая кусочек кода. Однако, мувиклипы нельзя смешивать с другими объектами Флеша - они совершенно обособленные структуры.

angeldark
01.07.2008, 01:35
Невозможно создавать мувиклипы на "пустом месте", так же как не может быть из ничего всего. Есть корневой "мувиклип" - _root на нем все и строиться в Флеше. Не надо относиться к мувиклипам обязательно как к видимым объектам. Мувиклипы это условность, выражающая кусочек кода. Однако, мувиклипы нельзя смешивать с другими объектами Флеша - они совершенно обособленные структуры.
ну я имею в виду под объектами все мувиклипы кроме рута, который в моем понимании - рабочее поле. Короче с этим уже разобрались. Может тогда разберемся с тем как одной командой приаттачить мувик в определенном месте? т.е. по определенным координатам, без создания мувиклипа (не рута!) в этом определенном месте

iNils
01.07.2008, 01:43
любой_клип.attachMovie ("id", "имя", глубина_в_любом_клипе, {_x:координата_x, _y:координата_y})

angeldark
01.07.2008, 02:33
любой_клип.attachMovie ("id", "имя", глубина_в_любом_клипе, {_x:координата_x, _y:координата_y})
ругаеццо:
**Ошибка** Сцена=Сцена 8, слой=Слой 1, кадр=2:Строка 1: '}' or ',' expected
_root.attachMovie("file", "bmp", this.getNextHighestDepth(), {_x:100_x,_y:100_y});

Общее количество ошибок ActionScript: 1 Сообщенные ошибки: 1
или может вы имели в виду под "координата_x" просто цифру? Тогда он это просто игнорирует, размещая объект в точке 0.0

iNils
01.07.2008, 03:06
1. В русском языке нет слова "ругаеццо", подобные лексические построения на этом форуме запрещены. Читайте правила.
2. координата_x - это число
3. Если вы пишите _root.attachMovie, то должны писать _root.getNextHighestDepth(), а не this, и наоборот. Иначе это рано или поздно привидет к ошибке.
4. Если объект размещается в точке 0.0, то проблема в другом месте, но ни как ни в данном строке кода. Покажите исходник.

crazyone
01.07.2008, 11:38
Надо так:
_root.attachMovie("file", "bmp", this.getNextHighestDepth(), {_x:100,_y:100});

Я даже не знаю, что бы могло вам помочь. Банальная программистская безграмотность на этом форуме не лечится. Попробуйте просто разобраться с основами сами.

angeldark
01.07.2008, 20:26
я понял в чем у меня был баг: вместо мувиклипа я аттачил кнопку, поэтому ее координаты и не задавались)