Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   ООП (Методы программно созданных клипов) (http://www.flasher.ru/forum/showthread.php?t=29565)

znick 02.04.2002 14:39

ООП (Методы программно созданных клипов)
 
Осваиваю ООП во Flash. Есть постоянная проблемма.

Допустим сделал клип, в его первом кадре создал свои свойства (т.е. var имя_свойства), свои методы (function имя_метода {...}), которые управляют поведением клипа (свойства _x, _y и т.д.) и его данными. Т.е. создал свой объект-клип (дальше [child]). [Как написано в прилагаемой к FLASH 5 документации - клип то же объект.]
Теперь из клипа-родителя[parent] с помощью duplicateMovieClip наплодил несколько дочерних клипов, таких же как child:
for(i=1; i<кол-во_нужных_клипов; i++) {
оригинал.duplicateMovieClip("копия"+i,i);
}
И по идее хотелось бы вызывать методы всех этих размноженных клипов и использовать их свойства (те которые сам создал).
Свойства то работают, работают так же и методы оригинала, т.е. клипа который был расположен на сцене в ручную. Но методы программно созданных клипов даже не вызываются.
Конечно можно писать методы в клипе родителе (parent) с параметром, который передает нужный дочерний, объект клип, но код получается запутанным и теряется смысл ООП.
Может есть у кого-нибудь есть простенький работающий пример, использования методов, программно размноженных объектов-клипов? Вышлите пожалуйста.
Заранее благодарен.

Aib 02.04.2002 20:11

Ты что сделать-то хочешь?
Если методы клипов переопределить, то это impossible.

znick 03.04.2002 00:27

Вложений: 1
Конечная цель такова: управление клипом не набором свойств:

имя_клипа._visible=...;
имя_клипа._rotation=...;
имя_клипа.свое_свойство0=...;
имя_клипа.свое_свойство1=...;
...

а просто написать метод, что бы контролировать клип конструкцией вида:

имя_клипа.имя_метода(список параметров);


К примеру эффект фейерверка(Как то делал на C++/OpenGL).
сейчас хочу реализовать во флэше.

Изначально на сцене лежит только один клип "firework".
Просто какой нибудь кружочек с радиальной заливкой или что то вроде звездочки.
В нем определен метод "start" для запуска по направлению, скорости, цвету времени до взрыва и др.
Так же есть методы для расчета шага полета, взрыва и др.
После вызова метода "start" клип полетел в зависимости от параметров.
В момент взрыва нужно вызвать метод "explosion", который размножит клип "firework" и запустит каждый экземпляр в случайном направлении (вызовет метод "start", для каждого из них).

И если все делать в этом порядке, то получится так:
"firework" полетит, но после взрыва, размноженные клипы останутся на месте(т.к. не сработают методы "start").

Эффект я конечно сделал(у меня zipа нет, просто переименуй файл в swf). Но попробовав быстро адаптировать его в другой проект столкнулся с трудностями.

сочиNetz 03.04.2002 00:46

2Aib
А если я переопределю, что мне за это будет? ;);)

Щас придет john, вам такого расскажет :)

DeliMIter 03.04.2002 14:54

2Aib

Да, на твоем месте я бы поостерегся произносить такое вслух, да еще и громко...

2znick

Создаешь массив со своими клипами
Код:

clipStock = new Array();

 for (var i = 0; i < _max; i++) {
  yourClip.duplicateMovieClip("newName" + i, i);
  clipStock.push(this["newName" + i]);
 }

после чего обращаешься к клипам через

clipStock[_index].method_name(arguments);

RFMitrio 03.04.2002 15:04

Пишешь где угодно:
movieClip.prototype.Method=function(параметры)
{
суть метода.
}
И вызывай потом этот метод откуда угодно, поскольку метод теперь добавился к прототипу объекта мувиклип!

RFMitrio 03.04.2002 16:07

Некоторое уточнение: прототип надо изменить ДО использования нового метода в соответствии с порядком загрузки мувика ( например, если грузятся сначала верхние слои, а потом нижние - надо прототип изменять в высшем слое по отношению к слою с использованием метода )

Aib 03.04.2002 17:24

Ну, не знаю. Я, помниться, когда совершал подобное, ошибки не выдавались, просто всё вешалось и дело с концом. Я не спорю, может у Меня тогда просто что-то другое глючило...
Публичное сорри, больше не буду. :)

znick 03.04.2002 17:43

На счет порядка загрузки мувика
 
После компиляции в SWF нет информации о слоях.
Откуда сведения о порядке загрузке?

RFMitrio 03.04.2002 18:01

Смотри паблиш сеттингс. там можно устанавливать порядок загрузки ( лоад ордер: боттом ап и топ даун ).


Часовой пояс GMT +4, время: 08:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.