![]() |
чем заменить onLoad на мувиклипе?
Ну вот у меня куча мувиков на сцене.
В старину просто на каждом мувике писал onLoad, onRelease, onMouseOver и т.д. Теперь, разумеется, хочется код из мувиков убрать. С мышиными событиями все понятно, Код:
my_mc.onRollOver = function() {А как быть с заменой onLoad извне? Да, я понимаю, что существуют onLoadInit, onLoadComplete и т.д., но как я могу их использовать, если я программно не гружу и не создаю эти мувики, они просто уже есть у меня на сцене с соответствующими Instance Name-ами? |
onLoad нужен только в классах, если вы пишите код теперь в кадрах, то все содержимое onLoad просто выносится за пределы события.
Вместо Код:
on (press) {Код:
this.onPress = function () {Код:
mc.onPress = function () { |
Спасибо!
Я просто не могу сообразить, как лучше все эти действия присвоить клипам от my_mc1 до my_mc100. Запихать все в функцию и ее вызвать 100 раз циклом, передавая ей параметром текущее имя клипа? Или здесь изящнее великими и непонятными классами? :) |
Если клипы однотипные, то конечно лучше классом.
|
Да, на них на всех абсолютно одинаковые действия, они читают корневые переменные и в зависимости от собственного номера в собственном имени распоряжаются ими. :)
|
Цитата:
Ничем. |
Цитата:
|
Если экономить память, то вполне можно обойтись без классов:
вместо Код:
mc.onRelease = function () {Код:
//блок задания метода в цикле |
Метод в конструкторе класса?
|
а вдруг потребуется метод с собственным свойством?
да собственно занесение метода в конструктор класса - это как раз аналог примера 1 поста 8, а занесение метода в прототип класса - аналог примера 2 поста 8. |
Не понял, с каким собственным свойством, для которого надо отдельный метод создавать?
|
to chingachgoog
Есть функции, а есть методы (экземпляра и статические). Не надо их спутывать между собой. |
Цитата:
Как пример привел следующую ситуацию: метод записан в самом конструкторе и у метода есть собственное свойство (тогда это свойство будет уникальным у каждого экземпляра класса). Можно и другие примеры привести когда надо у каждого экземпляра создавать свои собственные методы. Цитата:
Метод в конструкторе класса - это создании функции в самом объекте-экземпляре "класса". А метод "наследуемый" - это просто метод в прототипе "класса", т.е. создание функции только в объекте прототипа и использование ссылок на нее. А то, что в AS2 статический метод - это в AS1 простое присваивание функции-классу своих свойств и методов. |
Цитата:
Цитата:
|
Код:
function Class1(){ |
И какой смысл писать не правильно?
|
Цитата:
|
Не понял про "писать неправильно" и про "AS2-код".
Пост 15 показывает: 1) в классе запросто может быть функция (метод) которая будет скопирована в каждый экземпляр класса 2) функция (метод) именно скопирован в экземпляр класса, т.е. их много, а не одна в прототипе класса. 3) у метода (функции) могут быть свои свойства. |
Я знаю только один случай когда нужно определить функцию внтури метода, это в классе Delegate.
Во всех остальных нужно писать правильно, а черт знает что. |
Пост #15 показывает, как делать не надо.
|
Цитата:
Цитата:
|
Цитата:
|
Я бы не назвал AS1 - как движение назад. Другое дело его маркетологически пытаются так представить.
В AS1 можно писать классы, а можно не писать - все выбирает пользователь исходя из своих задач. В данном случае писать класс излишне. |
а если продукт в будущем надобно доработать?
Переписывать в класс? |
Да дело то не в классах, а в том, что chingachgoog определяет функцию в функции и считает, что это нормально и все это делают.
|
Это должен решать сам флеш разработчик исходя из своего опыта.
Если вы не работаете над продуктом где трудятся одновременно более 2-х программистов, то очень много моментов где быстро и легко обходиться без классов. В любом случае я за выбор программиста - он должен решать как ему удобнее, а не маркетолог. |
В 15 посту вы написали чушь, причем тут маркетологи?
|
Цитата:
Я как раз в посте 8 показал, что считаю нормальным, а пост 15 лишь пример, что классы сами по себе не панацея от расхода памяти. add: Цитата:
А единственная существенная причина перехода на AVM2 заключается в новых методах, которых не было (не были доступны) в AVM1. Вы не видите тут маркетологического хода? |
А причем тут AVM2, когда этот раздел AS1/AS2?
|
Цитата:
А в AVM2 вы вообще не можете пользоваться AS1. Если под AS1 вы подразумеваете писанину в кадрах (не версию языка), то эта самая писанина оставлена на откуп дизайнерам, которые знают только stop() и gotoAndPlay(). Нормальный разрабочик писать в кадрах код не будет. |
Цитата:
Цитата:
Если вы так же не можете подобрать пример, когда это нужно, это еще не значит, что это не нормально. |
Цитата:
|
Припыли.
AVM1 - это AS1/AS2 AVM2 - это AS3 В AS1 писали классы на прототипах, а AS2 это обертка над AS1, которая взяла на себя рутинную работу и основное отличие AS2 от AS1 это не типизация, и не поставленные при публикации AS2, а код во внешнем файле который начинается с class {}. Но методы у них абсолютно идентичные. |
Цитата:
|
Цитата:
Цитата:
Теперь действительно, полноценный код в AVM2 не напишешь В СТИЛЕ AS1. Например, без создания классов. Цитата:
Цитата:
Так что же для вас, iNils является движением вперед, если вы не об AVM2 (=AS3), если AS2 - это лишь обертка под AS1? add: Цитата:
Сложности взаимодействия тут нет - это быстрая иллюстрация класса, хотите напишите его в стиле AS2 по всем правилам и с типизацией. Дело не в этом было - прочитайте с начала. А как раз в том, что вовсе не обязательно всегда "тянуть на ООП", когда можно проще и быстрей сделать. Цитата:
|
Цитата:
Цитата:
Цитата:
Код:
function A () {Цитата:
|
Цитата:
Цитата:
Цитата:
Я с самого начала, с поста 8 сказал где разница: 1) можно заносить функцию в прототип класса, и тогда будет как в вашем коде, экономия памяти и по сути одна копия функции (в прототипе) 2) можно заносит функцию в конструкторе класса (это мой код из поста 15). Память жрется и создается копия функции для каждого объекта. Свойство prop лишь показывает, что это именно копия функции, а не ссылка на нее в прототипе класса. Я хотел понятнее код изложить, но можно и так: Код:
function Class1(){Цитата:
Разве у 1000 программистов решающих одну задачу будет одинаковый код? |
Цитата:
Для меня данный разговор подошел к концу. |
| Часовой пояс GMT +4, время: 13:03. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.