|
|
|||||
Регистрация: Nov 2014
Сообщений: 3
|
avm2 trait function
Trait method, getter, и setter вроде понятно.Но function trait это что такое ? В чем разница между Method и function ? Если можно приведите пример в исходном коде.
|
|
|||||
если я правильно понимаю, трейты в контексте AS3 это какая-то внутренняя фича реализации наследования (что-то там весьма облегающая и ускоряющая)
зачем оно вам, средствами языка доступа к ним все равно ведь нет ? или нужен пример в исходном коде плеера ? или что имеется ввиду, интересно.. |
|
|||||
Собственно разница между методом и функцией описана в документации.
Добавлено через 5 минут Ну и способом вызова отличаются (call и callmethod).
__________________
משיח לא בא משיח גם לא מטלפן |
|
|||||
Регистрация: Jan 2013
Сообщений: 322
|
public function traceThis():void { trace(this); } public var traceThisFn:Function = function():void { trace(this); } public function Main() { traceThis(); // [object Main] traceThis.call( { } ); // [object Main] traceThisFn(); // [object global] traceThisFn.call( { } ); // [object Object] this.traceThisFn(); // [object Main] } |
|
|||||
Регистрация: Nov 2014
Сообщений: 3
|
Цитата:
traceThis - trait method. traceThisFn - trait slot. Я смотрел исходники flashDevelop там trait function не используется, с чего бы это ? |
|
|||||
>>Я смотрел исходники flashDevelop там trait function не используется, с чего бы это ?
ну вообще-то он на шарпе написан, какое отношение его исходники имеют к AVM2 не очень понятно, вы бы может все-таки прояснили с какой целью интересуетесь.. |
|
|||||
Регистрация: Nov 2014
Сообщений: 3
|
Цитата:
Цитата:
Цитата:
|
|
|||||
Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
|
XCxfwddDgg, никакого отношения fd к avm2 не имеет, это просто ide.
|
|
|||||
>> Хочу разобраться в структуре abcFile
ага, т.е. хотелось бы найти конструкцию, которая компилится в Trait_Function, вместо Trait_Method ? тут сори - нечем помочь, заоблачные для меня сферы, да и никакого смысла не вижу в этом ковыряться есть еще такое крамольное предположение: может Trait_Function просто зарезервированный тип, может и нет его вовсе в актуальной версии? |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Стало интересно, решил поискать инфы
tamarin-redux\esc\src\abc-encode.es switch(kind) { case TRAIT_Slot: case TRAIT_Const: let slotid = b.readU32(); let typename = b.readU32(); let value = b.readU32(); let kind = null; if( value != 0 ) kind = b.readByte(); trait = new ABCSlotTrait(name, attrs, kind==TRAIT_Const, slotid, typename, value, kind); break; case TRAIT_Method: case TRAIT_Setter: case TRAIT_Getter: let dispid = b.readU32(); let methinfo = b.readU32(); trait = new ABCOtherTrait(name, attrs, kind, dispid, methinfo); break; case TRAIT_Class: let slotid = b.readU32(); let classinfo = b.readU32(); trait = new ABCOtherTrait(name, attrs, kind, slotid, classinfo); break; case TRAIT_Function: // TODO: b.readU32(); b.readU32(); break; } switch (kind) { case TRAIT_Slot: case TRAIT_Const: slot_id = readU30(pos); // slot id value_index = readU30(pos); // value index if (value_index) { CHECK_POS(pos); pos += 1; // value_kind } break; case TRAIT_Class: readU30(pos); // slot id class_index = readU30(pos); break; case TRAIT_Getter: case TRAIT_Setter: case TRAIT_Method: earlyDispId = readU30(pos); // disp id method_index = readU30(pos); break; default: // unsupported traits type toplevel->throwVerifyError(kUnsupportedTraitsKindError, core->toErrorString(kind)); } Я думаю раньше как trait_function компилировались функции, которые вне класса и в файле именованном как имя функции например func.as но затем это выпилили так как есть trait_method, можно конечно попробовать поискать первые компиляторы as3 и проверить Последний раз редактировалось Nooob; 20.11.2014 в 03:49. |
Часовой пояс GMT +4, время: 15:46. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|