PDA

Просмотр полной версии : Обращение к клипам без Instance Name


CursedScroll
27.06.2006, 17:19
Здравствуйте.
Есть ли возможность при помощи AS обратиться к клипам, не имеющим Instance Name?
Задача поставлена следующим образом: делается игра в Flash 8 со своим встроенным редактором уровней. Редактор должен быть сконструирован так, чтобы дизайнер, который им будет пользоваться, мог просто перетаскивать нужные предметы из библиотеки в сцену, не заботясь о прописывании InNm-ов. Таким образом, необходимо как-то получить список всех клипов лежащих в определенном слое или кадре и потом как-то к ним обращаться.
Возможно ли это?
Спасибо.

Cvazimodo
27.06.2006, 17:34
instanceName'сы есть у всех мувов, не зависимо, прописали их или нет.
В случае, если пользователь не прописал эти имена явно, они назначаются (генерируются) автоматически.

Получить все мувы в другом муве можно просто перебирая все элементы и проверяя их тип (typeof()== 'movieclip').

CursedScroll
27.06.2006, 17:46
Получить все мувы в другом муве можно просто перебирая все элементы и проверяя их тип (typeof()== 'movieclip').

Все уровни игры запихнуты в отдельный клип "Locations", в нем есть слой "Items". Предполагается, что дизайнер будет выкладывать предметы на этот слой. Если я обращусь к "Locations" и опрошу его при помощи (typeof()== 'movieclip') -- я получу список всех клипов, которые в нем содержаться. Как выделить те, которые нужны?

PS Я понимаю, что архитектура достаточно странная, но менять ее мы, к сожалению, не можем =\

Cvazimodo
27.06.2006, 17:55
Всё зависит только от конкретной задачи. Я бы делал примерно так:
for (var ii in Locations) {
// перебираемый эелемент является клипом?
if (typeof(Locations[ii]) == "movieclip") {
// что это за клип?
if (Locations[ii].itemType == "carpet") {
// да, мы нашли ковёр и с ним надо что-то делать :)
}
}
}
А в библиотеке эелемент, изображающего ковер, нужно немного отредактировать. Заходим внутрь (ковра в библиотеке) и на первом кадре пишем:
this.itemType = 'carpet';

Что-то подобное... И пусть после этого дизайнер таскает этот мувик куда угодно (внутри Locations).

__i
27.06.2006, 19:12
все мувики по умолчанию нумеруються instanse0, instanse1... и т.д.

по этим именам можно к ним обращаться

CursedScroll
27.06.2006, 19:57
Код из примера не работал, я его изменил:

for (var i in Locations) {
// перебираемый эелемент является клипом?
if (typeof (Locations[i]) == "movieclip") {
var tst = eval(targetPath(Locations[i]));
// что это за клип?
if (tst.itemType == "carpet") {
trace(">>>>>>>>>");
}
}
}

В таком варианте все заработало, спасибо!

А нет ли какой-то возможности брать конкретный слой, узнавать, что на нем лежит и потом с этим работать?

Double
27.06.2006, 20:09
сделай ему редактор на АС, чтобы он(дезигнер) уровни "генерил" в плеере. тут же пусть и тестирует.

CursedScroll
27.06.2006, 20:13
сделай ему редактор на АС, чтобы он(дезигнер) уровни "генерил" в плеере. тут же пусть и тестирует.

Тоже вариант, боюсь только, что в бюджет не впишимся =)

Double
27.06.2006, 20:17
ну а чего, у тебя все уровни сразу с роликом станут грузиться? а если юзер даже первый не сможет пройти? уровень должен храниться массивом данных в отдельном файле и грузиться по мере необходимости.
а дезигнера к fla на пушечный выстрел подпускать нельзя. завтра он у тебя основной код грохнет, его уволят, а тебе снова всё писать (хотя я бы в этом случае и тебя бы уволил тоже ;) и админа, который ежедневное резервное копирование не сделал тоже бы уволил. и уборщицу. просто закомпанию)

__i
27.06.2006, 20:21
Код из примера не работал, я его изменил:
А нет ли какой-то возможности брать конкретный слой, узнавать, что на нем лежит и потом с этим работать?

а зачем тебе слой ? в готовой свф всеравно их нету!

CursedScroll
27.06.2006, 20:24
ну а чего, у тебя все уровни сразу с роликом станут грузиться? а если юзер даже первый не сможет пройти? уровень должен храниться массивом данных в отдельном файле и грузиться по мере необходимости.

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

Double
27.06.2006, 20:31
стало быть заказчик супер-одарённый. сочуствую.

CursedScroll
27.06.2006, 20:33
а зачем тебе слой ? в готовой свф всеравно их нету!
Да я думал, может как-то можно прикрутить к этому делу Document object, но, похоже, нельзя да и не зачем.