Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   чем заменить onLoad на мувиклипе? (http://www.flasher.ru/forum/showthread.php?t=108799)

chingachgoog 03.03.2008 15:15

Цитата:

Сообщение от iNils
А причем тут AVM2, когда этот раздел AS1/AS2?

А что вы тогда понимали под движением вперед, если движение назад - это AS1? Неужто AS2 на той же самой AVM1?

Цитата:

Сообщение от __etc
Что непонятного? Создание какой-то левой нетипизированной функции внутри метода (конструктора), да ещё присвоение подобному нетипизированному объекту каких-либо свойтсв, которых в нем нет — это вы считаете нормальным?

Если нетипизированная - это еще не значит левая.
Если вы так же не можете подобрать пример, когда это нужно, это еще не значит, что это не нормально.

etc 03.03.2008 15:18

Цитата:

Сообщение от chingachgoog
Неужто AS2 на той же самой AVM1?

Представьте себе. AVM2 = AS3.

iNils 03.03.2008 15:20

Припыли.
AVM1 - это AS1/AS2
AVM2 - это AS3
В AS1 писали классы на прототипах, а AS2 это обертка над AS1, которая взяла на себя рутинную работу и основное отличие AS2 от AS1 это не типизация, и не поставленные при публикации AS2, а код во внешнем файле который начинается с class {}. Но методы у них абсолютно идентичные.

etc 03.03.2008 15:27

Цитата:

Сообщение от chingachgoog
Если нетипизированная - это еще не значит левая.
Если вы так же не можете подобрать пример, когда это нужно, это еще не значит, что это не нормально.

Что нужно? Ваша писанина — не нужна. Помимо сложностей взаимодействия с локальной функцией подобного плана, она ещё жрет память и никак под ООП не тянет. А уж прицеплять свойства к подобной функции было модно в пятом флеше, для реализации псевдо-классов, которые тоже остались в AS2, но там это убожество хотя бы было убрано на уровень компилятора.

chingachgoog 03.03.2008 15:30

Цитата:

Сообщение от __etc
А в AVM2 вы вообще не можете пользоваться AS1.

Думаю вы поняли о чем я.

Цитата:

Сообщение от __etc
Если под AS1 вы подразумеваете писанину в кадрах (не версию языка), то эта самая писанина оставлена на откуп дизайнерам, которые знают только stop() и gotoAndPlay(). Нормальный разрабочик писать в кадрах код не будет

Нормальный разработчик сам решает где, когда и что он должен писать.
Теперь действительно, полноценный код в AVM2 не напишешь В СТИЛЕ AS1. Например, без создания классов.

Цитата:

Сообщение от __etc
Представьте себе. AVM2 = AS3.

Цитата:

Сообщение от iNils
Припыли.
AVM1 - это AS1/AS2
AVM2 - это AS3
В AS1 писали классы на прототипах, а AS2 это обертка над AS1, которая взяла на себя рутинную работу и основное отличие AS2 от AS1 это не типизация, и не поставленные при публикации AS2, а код во внешнем файле который начинается с class {}. Но методы у них абсолютно идентичные.

И я РОВНО о том же.
Так что же для вас, iNils является движением вперед, если вы не об AVM2 (=AS3), если AS2 - это лишь обертка под AS1?

add:
Цитата:

Сообщение от __etc
Что нужно? Ваша писанина — не нужна. Помимо сложностей взаимодействия с локальной функцией подобного плана, она ещё жрет память и никак под ООП не тянет.

Именно, то что такой код жрет память я и показывал. :)
Сложности взаимодействия тут нет - это быстрая иллюстрация класса, хотите напишите его в стиле AS2 по всем правилам и с типизацией. Дело не в этом было - прочитайте с начала. А как раз в том, что вовсе не обязательно всегда "тянуть на ООП", когда можно проще и быстрей сделать.

Цитата:

Сообщение от __etc
А уж прицеплять свойства к подобной функции было модно в пятом флеше, для реализации псевдо-классов, которые тоже остались в AS2, но там это убожество хотя бы было убрано на уровень компилятора.

Свойство к функции прицеплено, чтобы показать, что работает имеено копия функции, а не ее ссылка на прототип. Но если ПОДУМАТЬ, то вполне можно придумать для чего можно такое свойство использовать.

iNils 03.03.2008 16:04

Цитата:

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

Так что же для вас, iNils является движением вперед, если вы не об AVM2 (=AS3), если AS2 - это лишь обертка под AS1?
Для меня движение вперед, это переход на AS3, а не "об AVM2 (=AS3)" это ограничение раздела, а не мое.
Цитата:

Сложности взаимодействия тут нет - это быстрая иллюстрация класса, хотите напишите его в стиле AS2 по всем правилам и с типизацией.
Какого класса? Ваш код должен тогда выглядить так
Код:

function A () {
        this.A;
}
A.prototype.val = 123;
A.prototype.test = function () {
        this.val = 456;
};
///
obj1 = new A ();
obj2 = new A ();
trace (obj1.val);
trace (obj2.val);
obj1.test ();
trace (obj1.val);
trace (obj2.val);

Выходит вы вообще не понимаете, что такое класс.
Цитата:

Но если ПОДУМАТЬ, то вполне можно придумать для чего можно такое свойство использовать.
Если ПОДУМАТЬ, то можно сделать по другому и правильно

chingachgoog 03.03.2008 16:42

Цитата:

Сообщение от iNils
Нормальный разработчик думает о возможных изменениях.

Разумеется. И не вижу тут преграды для кода в кадрах. А собственно для любителей открывать еще один файл и в AS1 можно сохранять код вовне.

Цитата:

Сообщение от iNils
Для меня движение вперед, это переход на AS3, а не "об AVM2 (=AS3)" это ограничение раздела, а не мое.

Ну значит я правильно понял о чем вы говорите (об AVM2 и AS3), именно поэтому я и сказал о маркетинге с AVM2. Только почему-то вы сделали мне замечание по поводу раздела.

Цитата:

Сообщение от iNils
Какого класса? Ваш код должен тогда выглядить так
Код:

function A () {
        this.A;
}
A.prototype.val = 123;
A.prototype.test = function () {
        this.val = 456;
};
///
obj1 = new A ();
obj2 = new A ();
trace (obj1.val);
trace (obj2.val);
obj1.test ();
trace (obj1.val);
trace (obj2.val);

Выходит вы вообще не понимаете, что такое класс.

Не горячитесь.
Я с самого начала, с поста 8 сказал где разница:
1) можно заносить функцию в прототип класса, и тогда будет как в вашем коде, экономия памяти и по сути одна копия функции (в прототипе)
2) можно заносит функцию в конструкторе класса (это мой код из поста 15). Память жрется и создается копия функции для каждого объекта. Свойство prop лишь показывает, что это именно копия функции, а не ссылка на нее в прототипе класса. Я хотел понятнее код изложить, но можно и так:

Код:

function Class1(){
        this.f_class1=function(){}
        this.f_class1.prop=123
}

obj1=new Class1()
obj2=new Class1()

trace(obj1.f_class1.prop)
trace(obj2.f_class1.prop)

obj1.f_class1.prop=321

trace(obj1.f_class1.prop)
trace(obj2.f_class1.prop)

Это такой же "класс" как и "классы" AS2. Если я в примере не записал какие-либо свойства и методы в прототип, то это не значит, что это не "класс".

Цитата:

Сообщение от iNils
Если ПОДУМАТЬ, то можно сделать по другому и правильно

Что значит правильно?
Разве у 1000 программистов решающих одну задачу будет одинаковый код?

iNils 03.03.2008 16:51

Цитата:

Сообщение от chingachgoog
можно заносит функцию в конструкторе класса (это мой код из поста 15). Память жрется и создается копия функции для каждого объекта. Свойство prop лишь показывает, что это именно копия

А еще можно молотком по пальцам бить вместо гвоздя. И с пеной у рта доказывать, что забивающий сам решит, что ему нужнее и даже найти этому применение. Только вот все равно этог будет выглядить глупо.

Для меня данный разговор подошел к концу.


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

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