PDA

Просмотр полной версии : ??? __proto__ ??? - хАчу сЪесть, а как ...


lexass
04.09.2002, 13:33
сабЖ :)

ЗЫ
ну понакидайте интересной инфы, а то все про гОтО и прочую бяку :D

ЗЗЫ
вопрос про getGidrometcenter() - был решен даааавно :D :D :D

JeeP
04.09.2002, 14:31
http://debreuil.flashmaster.ru/ch01_Proto.htm

приятного аппетита!

lexass
04.09.2002, 14:48
А я думал для начала будет ответ :
" http://flasher.ru/forum/sets/flasher/top_search.gif "

;)

JeeP
04.09.2002, 15:33
__proto__ - слово страшное :eek:

ни у кого с поиском не ассоциируется! :)

lexass
04.09.2002, 15:40
. prototype
/
-- addProperty
\
. registerClass



о чем еще бы интересном поговорить?
ЗЫ
странно, тему никто не поддерживаеТ:/

lexass
04.09.2002, 17:54
видимо название вопросу я дал страшноЕ :mad:
никто ничего непишеТ :/
нодо было назвать:
" А как это работает"
или
"что это за фишка"
или
".........." :D ;)

DeliMIter
04.09.2002, 18:55
Я бы с безумным удовольствием рассказал это все под хорошее пиво с обильными креветками... ну, на крайняк с маслинами... Но в форуме выкладывать всю эту скучную техническую инфу на три-четыре лекции... Неее...

P.S. Есть урок ООП от john'а и психический урок про бублик от Уилла.

SphinX
04.09.2002, 20:50
в двух словах могу сказать обо всём:


prototype
смотри мой топик (http://flasher.ru/forum/showthread.php?s=&threadid=36535)

registerClass
как пользоваться:
1) создаёшь символ с возможностью экспорта в AS
2) даёшь ему идентификатор
3) определяешь класс со свойствами и методами
4) кодируешь: Object.registerClass("идентификатор",класс);
и теперь, когда ты будешь импортировать свой символ с
идентификатором, он будет содержать свойства и методы твоего
класса

addProperty
определяет у твоего класса новое свойство:
YoursClass.prototype.addProperty(pName,getFName,setFName);
pName - имя свойства (типа _width, _height, _alpha, ...)
getFName - функция, которая возвращает значение свойства
setFName - функция, которая устанавливает значение свойства

__proto__
это почти то же самое, что и prototype, по крайней мере я так думаю




ну чё, остался только кусок кода про addProperty

// установщик
function getf()
{
return this.str;
}

// получатель
function setf(s)
{
this.str = s;
}

// какой-нибудь класс
function Class()
{
this.init();
}
// его конструктор
Class.prototype.init = function()
{
trace("constructor");
this.str = "init_string";
}
// добавляем свойство
Class.prototype.addProperty("property",getf,setf);

c = new Class();// новый объект класса
trace(c.property);// печатаем свойство
c.property = "some_new_string";// задаём новое значение
trace(c.property);// печатаем свойство

удачи ... :D :D :D

lexass
05.09.2002, 10:29
Спасибо за красивую расСкраСку или расСкаЗку :cool:
Оригинал написал(а) SphinX
2lexxas если что непонятно, пиши ...

Ох, Эх, пишу :/

Все понятно, что ничего непонятно :rolleyes:
---------------------------------------------------------
Оригинал написал(а) Nox Noctis
правильно-правильно... объясни лехассу трудные места по части флэша и ООП в нем ...
*катается по полу*
Nox Noctis, у меня дома тоЖ полы некому убирать :D ;)
подтягивайся, я пиво поставлю :D
ЗЫ
заодно с полами про опп поговорим :D :D :D ;)
---------------------------------------------------------
Оригинал написал(а) DeliMIter
Я бы с безумным удовольствием рассказал это все под хорошее пиво с обильными креветками... ну, на крайняк с маслинами...
Гы%)
А я бы под все это дело с безумным удовольствием ПОСЛУШАЛ
;)
---------------------------------------------------------

ЗЫ
Извеняйте уважаемые флешеры, но как-то моло инфы... .
Или туплю Я :(
Вообжем почти ничего непонял:/
СПАСАЙТЕ - а то я так ничего и неузнаю!!!

Baltika
05.09.2002, 10:43
кто верует, тот спасен .... (©)
%))))
http://www.debreuil.flashmaster.ru/ch01_Proto.htm

упс..... уже было... :(
но, "повторение - мать ...."

а можт всеж про ГоТо покалякаем ?
;))

lexass
05.09.2002, 10:53
Оригинал написал(а) Baltika
а можт всеж про ГоТо покалякаем ?

неа, про ГоТо нехачу!:/
ЗЫ
Я понятливый, просто много читать западло (хоть и ссылка толковая), вы мне обясните по человеческИ. ПЛЗ.
Оч. нехотца серым быть...

SphinX
05.09.2002, 11:03
2lexass:
если тебе "нехотца серым быть...", то придётся читать, и думать тоже :p ... много-много ...
как говорят: "без труда не выловишь и инфу из ман`а"

lexass
05.09.2002, 11:26
Оригинал написал(а) SphinX
то придётся читать, и думать тоже
читал
думал
...
ТРебую разЪяснений , обЪяснений и пояснениЙ ;)
...
не бросайте на произвол судЬбЫ, а то такого наПрототаЙплЮ :eek:

Sami
05.09.2002, 11:48
ты б хоть попробовал чо сделать-та.. а то все разъясните, да...
в опщем попытайся, что не получится спросишь... а так те на пальцах без оных сложно объяснить... а в двух словах не получиЦЦа...

lexass
05.09.2002, 12:05
а в двух словах не получиЦЦа...
Гы%)))
готов выслушать в трЁх ;)

ЗЫ
отмазки непринимаются!!!

Sami
05.09.2002, 12:21
Оригинал написал(а) lexass

Гы%)))
готов выслушать в трЁх ;)

ЗЫ
отмазки непринимаются!!!
а в трех... те линк дали.. сиди и читай!!!
второй же мессагой...
там все разжевано...
можешь посидеть за компонентами и разбираться в АС... весело... тама все на пальцах...

Baltika
05.09.2002, 12:37
2Sami
раз человек спрашивает - значит ему это нужно...
объяснил бы, если сам разобрался ;) и другим наверняка будет интересно(имхо)

Sami
05.09.2002, 12:47
а чего рассказывать то??? если уже все написано...
если он не задает конкретных вопросов...??
мне остается только скопировать текст и вставить сюда...
я изначально сидел и разбирался в компонентах... сначала все понял там, а потом прочитал линк в етой теме и доразобрался...

lexass
05.09.2002, 12:53
Оригинал написал(а) Sami
а чего рассказывать то???

я изначально сидел и разбирался в компонентах...

такС, начнем с малого:
1 что такое "компонентах"

ЗЫ
вопросы всплывают, медле-е-енно, по мере обЪяснениЙ ;)

SphinX
05.09.2002, 13:24
что такое компонент разъяснить могу ... а про "компонентах" - не знаю :D ...

lexass
05.09.2002, 13:34
ну давай про компонент ;)

ЗЫ
А про "компонентах" раскажет Sami :cool:

Sami
05.09.2002, 13:34
шо... опять решил надприкалываться....?
еси не знаешь что такое множественное число в русском яязыке... тада я те ничего объяснять не буду.. времени жаль...

Baltika
05.09.2002, 13:38
я тож про копнонеты хочу услышать... :rolleyes:
Sami, не жмись временем :), выкладывай чего знаешь..

lexass
05.09.2002, 13:40
Оригинал написал(а) Baltika
я тож про копнонеты хочу услышать...

Sami, не жмись временем , выкладывай чего знаешь..

во еще один интересующийся :cool: (теперь не так стыдно)

ЗЫ
Sami, нераскажешь сам, будем пытать :D ;)

Sami
05.09.2002, 13:43
см выше... :rolleyes:

Baltika
05.09.2002, 13:43
Оригинал написал(а) lexass

Sami, нераскажешь сам, будем пытать :D ;)

раскаленным прототипом :cool: :)

lexass
05.09.2002, 13:47
Оригинал написал(а) Sami
см выше... :rolleyes:

насколько "выше" ?:/.

раскаленным прототипом с новыми пропертями :)

SphinX
05.09.2002, 13:54
я щас за Толстяком - Доброе ... ... ... 4 пакетика сухариков ... cUULLL'er

поэтому возьмусь ... :cool: :cool: :cool:
про наследование свойств & методов Вы, дорогие товарищи, надеюсь, уже в курсе ...

компонеты - это классы обладающие свойствами мови-клипов т.е. они могут быть кнопками, умными эффектами, целыми разделами на сайте ...
кроме того, я к стати говорю о ФЛЕШЬ компонентах, они имеют несколько своих методов (это можно узнать из собственно исходников этих компонентов)

lexass
05.09.2002, 13:57
про наследование свойств & методов Вы, дорогие товарищи, надеюсь, уже в курсе ...

неА, поподробней ПЛЗ.

Baltika
05.09.2002, 13:58
Оригинал написал(а) lexass

насколько "выше" ?:/.


наверно в разделе ActionScript:
this.__proto__ = ActionScript.prototype;
:rolleyes: :confused:

Sami
05.09.2002, 14:15
выше смари линк...
2SphinX
шо-то тя тож на компонентах потянуло... гыыыыыы!!

lexass
05.09.2002, 14:40
Харе болтологиЮ разводить, давайте разЖёвывать тему!

Sami
05.09.2002, 15:00
вот жуем жуем... никак наесться не могем...

lexass
05.09.2002, 15:03
конкретика бут???

Sami
05.09.2002, 15:37
__proto__ - раздает слонов, т.е. дарит свой прототип тому, кому ты ето скажешь...

lexass
05.09.2002, 15:47
тому, кому ты ето скажешь

непонял:/
например ...

infinity
05.09.2002, 15:50
ну про компоненты во флеш мы разобрались :p

теперь расскажите о компонетах в Delphi :D
хотел бы услышать подробную инструкцию о том, как их писать :D :D :D

lexass
05.09.2002, 15:54
погодЬ с Delphi

тут еще с флешОй непонятки ;)

ЗЫ
ждемС......

Sami
05.09.2002, 15:57
отбой :D

Sami
05.09.2002, 16:01
Оригинал написал(а) infinity
ну про компоненты во флеш мы разобрались :p

теперь расскажите о компонетах в Delphi :D
хотел бы услышать подробную инструкцию о том, как их писать :D :D :D
пИсать ты сможешь в зависимости от твоей пыпыски...)

lexass
05.09.2002, 16:03
Оригинал написал(а) Sami
отбой
какой отбой?
ровняйсь, смирно,
отвечать на поставленый вопрос..............

Sami
05.09.2002, 16:06
Оригинал написал(а) lexass

какой отбой?
ровняйсь, смирно,
отвечать на поставленый вопрос..............
командовать буишь сваим куриным мозгам ;)

lexass
05.09.2002, 16:15
2Sami, дружественно обменяемся взаимными оскАрблениями???
мозга у мЯ неМа вааще, у мЯ проц от ВМ-12, потому пытаюсь инфу по данному вопросу упаковать.......
ЗЫ
неможешь говорить по делу молчи...
ЗЗЫ
и так блиЖе к телУ, или никто толком ничего обЪяснить неможет???
доходчиво...

infinity
05.09.2002, 16:20
да, Sami, было б неплохо чтоб ты попусту не пИсал, а пораскинув своимикуриными мозгами ответил хоть на один ответ, а не отмазывался типа - "читай там", или
"Экшн скрипт написан по подобию Ява" :D :D :D :D

Sami
05.09.2002, 16:25
вы уже не задаете.. а издеваетесь :)
2infinity
писни чем Ява особо сильно отличается от АС5...

infinity
05.09.2002, 16:28
одно другому не мешает :D

Sami
05.09.2002, 16:31
дебилам.., - возможно...

infinity
05.09.2002, 16:34
да пошел ты, Г№;%ДОН :mad:

lexass
05.09.2002, 16:38
о моей принадлежности IQ поговорим во флейме или на едине

ЗЫ
по сабжу ответы будут?

2infinity, ненервничай оно того нестоит...

Baltika
05.09.2002, 16:40
Оригинал написал(а) Sami
__proto__ - раздает слонов, т.е. дарит свой прототип тому, кому ты ето скажешь...

и что это значит ?
--
a = {};

ну и кому и чЕго будет "дарить" a.__proto__

:confused:

ЗЫ хватит членами трясти, давайте по сабжу..

lexass
05.09.2002, 16:47
a = {};
b=[]
a.__proto__ = b

моЖ кому чего и перепадет ;)

ЗЫ
Baltika, представляю твои круглые глаза :D :)

Baltika
05.09.2002, 16:56
ГЫ%))))))))))

со своей стороны предлагаю нечто более простое для понимания:
--
a = {};
trace(a.__proto__ == Object.prototype);

:cool:

lexass
05.09.2002, 17:01
Baltika, ответ true даже без вставляния во флешак.
ЗЫ
этоЖ прозрачно;) ,
но неочевидно :(

поехали дальше

ЗЫ
infinity и Sami на задней парте устроили дуЭль на линейкаХ ;)

infinity
05.09.2002, 17:21
2 lexass

Sami эту дуэль проиграл, съехав на оскорбления :D

теперь по сабжу:
так что тебе не понятно?
Свойство объекта __proto__ является ссылкой на свойство prototype ф-ции конструктора этого объекта, короче говоря:

iobj=new Obj();
trace(iobj.__proto__==Obj.prototype); //true

шо не ясно?

Baltika
05.09.2002, 17:22
Object.prototype.func = function() {
trace("I'm func");
};

a = {};
a.func();
b = []
b.prototype.__proto__ = a.prototype;
b.func();


lexass, куда дальше ?

lexass
05.09.2002, 17:32
куда дальше ?
а фиг его знает :mad:

----------------------------------------------------------
infinity, с победой тебЯ;)
----------------------------------------------------------

Свойство объекта __proto__ является ссылкой на свойство prototype ф-ции конструктора этого объекта

в этой фразе безусловно есть смысЛ!
Но если ее прочитать медленно и вдумчиво, то масло масленое:/

ЗЫ
а я вот где-то слышал что в прототипе моно добиться чтоб функции были "протектед", эт как??? Хачу, если моно :rolleyes:

infinity
05.09.2002, 17:38
ну ты lexass и нудный :)

и зачем тебе этот АС вообще?
__прото__ используется интерпретатором в основном для нахождения унаследованных свойств объекта, и юзать его самому не нада. ну а если уж сильно хочется, то можно так, как я выше написал. а по другому (читай: круче) - так это уже извратом пахнет ;)

а насчет протектед итд:
давай напишем свой АС, в котором будет и протектед и переопределение операторов и много чего еще :D :D :D
как тебе? :p

Baltika
05.09.2002, 17:40
Оригинал написал(а) lexass

а я вот где-то слышал что в прототипе моно добиться чтоб функции были "протектед", эт как??? Хачу, если моно :rolleyes:

а нафига это нужно ? :cool: ;)

lexass
05.09.2002, 17:45
я не нудный, я достаевскиЙ :D ;)

свой AS писать не бум, ленно :/

и зачем тебе этот АС вообще?
дыг без него одни гифы анимированые получаются:(
правда векторные:)

а нафига это нужно ?
Baltika, поверь на слово нужНО!.

ЗЫ
Кручу верчу всех запутать хАчУ :D ;)

infinity
05.09.2002, 17:48
мда... твои флудерские качества всем давно известны :D
эт для нас не новость :cool:

Baltika
05.09.2002, 18:32
lexass, яж грил в самом начале - нада была спрашивать про ГоТо :cool:

а так тебе ничего никто не объяснил, да еще и во флудеры записали... ;) :p

john
05.09.2002, 19:21
__proto__ как говорилось выше,

это ссылка на prototype конструктора,

и все,

конструктор в принципе может уже использовать другой прототип, (подменить), но потомок будет иметь тот же объект в __proto__ , что получил при рождении.

все просто, у конструктора prototype у экземпляра - __proto__

Но помоему большинство мессаг этого топика посвещено другому, и к этой теме не посвящены,

глумление короче, все все знают и глумятся :)
модно это стало на форуме....

обратно к теме,

я почти не использую __proto__ кроме некоторых случаев,

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

пример :


this.depth = ++this.__proto__.counter + 999;

var o = this.holder = _root.createEmptyMovieClip("alt_"+c+"_mc",this.depth )


это чтбы все экземпляры класса имели различные depth у своих мувиков....

или же


//*************************************************************************
//*************************************************************************
//
// Primer CLASS created: [17:29:22 , Thursday, September 05, 2002]
//
//*************************************************************************
//*************************************************************************

#initclip

//-------------------------------------------------------------------------
// class constructor
//-------------------------------------------------------------------------

_global.C_PrimerCLASS = function()
{
this.init();
}

//-------------------------------------------------------------------------
// create prototype
//-------------------------------------------------------------------------

C_PrimerCLASS.prototype = new MovieClip();

//-------------------------------------------------------------------------
// class default attributes
//-------------------------------------------------------------------------

C_PrimerCLASS.prototype.allInstances = [];

//*************************************************************************
//-------------------------------------------------------------------------
// class methods
//-------------------------------------------------------------------------

C_PrimerCLASS.prototype.init = function()
{
this.__proto__.allInstances.push(this);

/*

и так далее

*/
}

//-------------------------------------------------------------------------
// class methods
//-------------------------------------------------------------------------

C_PrimerCLASS.prototype.onUnload = function()
{
var a = this.__proto__.allInstances;
for (var i=0;i<a.length;i++)
{
if(a[i] == this)
{
a.splice(i,1);
}
}
}

//-------------------------------------------------------------------------
// call all instances
//-------------------------------------------------------------------------

C_PrimerCLASS.prototype.callAll = function()
{
var a = this.__proto__.allInstances;
for (var i=0;i<a.length;i++)
{
a[i].onChange(this);
}

/*

и так далее

*/
}

//-------------------------------------------------------------------------
// onChange
//-------------------------------------------------------------------------

C_PrimerCLASS.prototype.onChange = function(changed)
{
trace(changed);
}

//-------------------------------------------------------------------------
// register
//-------------------------------------------------------------------------

ASSetPropFlags(_global,"C_PrimerCLASS",131);

Object.registerClass("C_PrimerCLASS",C_PrimerCLASS)

#endinitclip


еще одно применение (у меня) __proto__ это обработака только "локальных" , "собственных" полей класса, и не обработка наследованных,

например хочется в цикле пройтись по всем полям и не трогать наследованные,

вот пример,



//-------------------------------------------------------------------------
// clone object
//-------------------------------------------------------------------------

Object.prototype.clone = function()
{
var empty_object = new this.constructor();
empty_object.__proto__ = this.__proto__;
return empty_object.copy(this);
}

//-------------------------------------------------------------------------
// copy params of any object
//-------------------------------------------------------------------------

Object.prototype.copy = function()
{
var proto = arguments[0].__proto__;
arguments[0].__proto__ = undefined;

for(var v in arguments[0])
{
this[v] = arguments[0][v];
}

arguments[0].__proto__ = proto;

return this;
}

//-------------------------------------------------------------------------
// clear params by default
//-------------------------------------------------------------------------

Object.prototype.clear = function()
{
var proto = this.__proto__;
this.__proto__ = undefined;
for(var v in this) delete this[v];

this.constructor.apply(this,arguments)

this.__proto__ = proto;
}



удачи

Nox Noctis
05.09.2002, 19:56
ну, вот, все встало на свои места :))

здравствуй, джон :)))
давно тебя не видно что-то... скучно стало ? ;))

я, если честно, вчера думал, что лехасс прикалывается... сегодня прихожу - а тут такого нагнали... флудеры короче :) гнусные мерзкие флеймеры :)

Nox Noctis
05.09.2002, 20:03
неконструктивное замечание:
ASSetPropFlags(_global,"C_PrimerCLASS",131);
прикольно :)
а почему именно '131' ? ;)
можно было написать, к примеру,
ASSetPropFlags(_global,"C_PrimerCLASS",187227);
:)
хотя
ASSetPropFlags(_global,"C_PrimerCLASS",3);
- это не для настоящих мачо :)) это да :))

john
05.09.2002, 20:12
:D

привет, Nox Noctis :)

да, заскучал слегка...

а почему именно '131' ? ;)

ты прав, конечно можно и другую циферку,

но такая циферка используется при создании всех классов флэша, видел в коде инициализации плейера

вот и подумал что она получшее :)

и еще можно класс после регистрации (registerClass) вообще удалять, как поле,
чтобы не плодить,

но вдруг нужен будет, например будет суперклассом для другого класса, вот я и закрываю его просто.

Nox Noctis
05.09.2002, 21:00
хммм.... видать это поставлено "на всякий пожарный"...
видимо критична единичка в старшем бите...
в пятерке например вместо нуля нужно ставить 8 - чтобы полностью разлочить свойства...

просто забавно :) вместо '3' ставить '131'... :))

DeliMIter
05.09.2002, 21:16
Ой как смешно, ха-ха три раза...

Nox Noctis
05.09.2002, 21:25
бэээээ :))))
*показывает язык*

lexass
06.09.2002, 10:20
покидались кусками кодов :/

глумление короче, все все знают и глумятся
сумневаюсЬ что все знают :/

ЗЫ
про функцию "ASSetPropFlags()" я ничего не слышал, не знаю и спрашивать небуду ;)

ЗЗЫ
Ладно вопрос ДНЯ:

Как это все применимо во флеш5 ???


и не флудеры мы вовсе, так вопросики решаем...

Baltika
06.09.2002, 10:49
2john

спасибо!
а то я все голову ломал над тем как и где можно найти для __proto__ реальной применение....

ЗЫ lexass, слезай с пятерки, переходи на........ четверку :p :D

lexass
06.09.2002, 10:54
на пятерку заставляют :mad:

на четверку нехачу , там #include нет , а блокнот рулит

infinity
06.09.2002, 11:12
блокнот сакс - рулит FAR+Colorer :)

и действительно, МЫ - не флудеры, ФЛУДЕРЫ - не мы
просто, так, по теме материмся :D

lexass
06.09.2002, 16:47
блокнот - рулит, но не светит:/

john
06.09.2002, 17:49
2lexass

все примеры применения __прото__ которые я привел,
приминимы и в пятерке, если выделить суть,

1. создание и изменение общих параметров для всех инстансвов класса из экземпляров.

2. перебор собственных параметров экземпляра класса без наследованных. (сохранение прото в переменную, присвоение __прото__ значение undefined, цикл, возращение значение прото из переменной)

новых применений __прото__ в МХ я не придумал еще :)
все это работало и в пятерке.

lexass
02.10.2002, 19:15
давайте медленно все сначала, я после отпуска вааще только вспомнил как комп включать ;)

Baltika
03.10.2002, 17:14
gotoAndPlay(1 (http://www.flasher.ru/forum/showthread.php?s=&threadid=36697&perpage=15&pagenumber=1));

;))

lexass
03.10.2002, 18:41
:D ;)