![]() |
ООП (Методы программно созданных клипов)
Осваиваю ООП во Flash. Есть постоянная проблемма.
Допустим сделал клип, в его первом кадре создал свои свойства (т.е. var имя_свойства), свои методы (function имя_метода {...}), которые управляют поведением клипа (свойства _x, _y и т.д.) и его данными. Т.е. создал свой объект-клип (дальше [child]). [Как написано в прилагаемой к FLASH 5 документации - клип то же объект.] Теперь из клипа-родителя[parent] с помощью duplicateMovieClip наплодил несколько дочерних клипов, таких же как child: for(i=1; i<кол-во_нужных_клипов; i++) { оригинал.duplicateMovieClip("копия"+i,i); } И по идее хотелось бы вызывать методы всех этих размноженных клипов и использовать их свойства (те которые сам создал). Свойства то работают, работают так же и методы оригинала, т.е. клипа который был расположен на сцене в ручную. Но методы программно созданных клипов даже не вызываются. Конечно можно писать методы в клипе родителе (parent) с параметром, который передает нужный дочерний, объект клип, но код получается запутанным и теряется смысл ООП. Может есть у кого-нибудь есть простенький работающий пример, использования методов, программно размноженных объектов-клипов? Вышлите пожалуйста. Заранее благодарен. |
Ты что сделать-то хочешь?
Если методы клипов переопределить, то это impossible. |
Вложений: 1
Конечная цель такова: управление клипом не набором свойств:
имя_клипа._visible=...; имя_клипа._rotation=...; имя_клипа.свое_свойство0=...; имя_клипа.свое_свойство1=...; ... а просто написать метод, что бы контролировать клип конструкцией вида: имя_клипа.имя_метода(список параметров); К примеру эффект фейерверка(Как то делал на C++/OpenGL). сейчас хочу реализовать во флэше. Изначально на сцене лежит только один клип "firework". Просто какой нибудь кружочек с радиальной заливкой или что то вроде звездочки. В нем определен метод "start" для запуска по направлению, скорости, цвету времени до взрыва и др. Так же есть методы для расчета шага полета, взрыва и др. После вызова метода "start" клип полетел в зависимости от параметров. В момент взрыва нужно вызвать метод "explosion", который размножит клип "firework" и запустит каждый экземпляр в случайном направлении (вызовет метод "start", для каждого из них). И если все делать в этом порядке, то получится так: "firework" полетит, но после взрыва, размноженные клипы останутся на месте(т.к. не сработают методы "start"). Эффект я конечно сделал(у меня zipа нет, просто переименуй файл в swf). Но попробовав быстро адаптировать его в другой проект столкнулся с трудностями. |
2Aib
А если я переопределю, что мне за это будет? ;);) Щас придет john, вам такого расскажет :) |
2Aib
Да, на твоем месте я бы поостерегся произносить такое вслух, да еще и громко... 2znick Создаешь массив со своими клипами Код:
clipStock = new Array();clipStock[_index].method_name(arguments); |
Пишешь где угодно:
movieClip.prototype.Method=function(параметры) { суть метода. } И вызывай потом этот метод откуда угодно, поскольку метод теперь добавился к прототипу объекта мувиклип! |
Некоторое уточнение: прототип надо изменить ДО использования нового метода в соответствии с порядком загрузки мувика ( например, если грузятся сначала верхние слои, а потом нижние - надо прототип изменять в высшем слое по отношению к слою с использованием метода )
|
Ну, не знаю. Я, помниться, когда совершал подобное, ошибки не выдавались, просто всё вешалось и дело с концом. Я не спорю, может у Меня тогда просто что-то другое глючило...
Публичное сорри, больше не буду. :) |
На счет порядка загрузки мувика
После компиляции в SWF нет информации о слоях.
Откуда сведения о порядке загрузке? |
Смотри паблиш сеттингс. там можно устанавливать порядок загрузки ( лоад ордер: боттом ап и топ даун ).
|
| Часовой пояс GMT +4, время: 08:15. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.