Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 18.11.2014, 06:13
XCxfwddDgg вне форума Посмотреть профиль Отправить личное сообщение для XCxfwddDgg Найти все сообщения от XCxfwddDgg
  № 1  
Ответить с цитированием
XCxfwddDgg

Регистрация: Nov 2014
Сообщений: 3
По умолчанию avm2 trait function

Trait method, getter, и setter вроде понятно.Но function trait это что такое ? В чем разница между Method и function ? Если можно приведите пример в исходном коде.

Старый 18.11.2014, 11:54
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
если я правильно понимаю, трейты в контексте AS3 это какая-то внутренняя фича реализации наследования (что-то там весьма облегающая и ускоряющая)
зачем оно вам, средствами языка доступа к ним все равно ведь нет ?
или нужен пример в исходном коде плеера ?
или что имеется ввиду, интересно..

Старый 18.11.2014, 18:14
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 3  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Собственно разница между методом и функцией описана в документации.

Добавлено через 5 минут
Ну и способом вызова отличаются (call и callmethod).
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 18.11.2014, 19:37
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 4  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Код AS3:
		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]
		}

Старый 19.11.2014, 01:06
XCxfwddDgg вне форума Посмотреть профиль Отправить личное сообщение для XCxfwddDgg Найти все сообщения от XCxfwddDgg
  № 5  
Ответить с цитированием
XCxfwddDgg

Регистрация: Nov 2014
Сообщений: 3
Цитата:
Сообщение от nubideus Посмотреть сообщение
Код AS3:
		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]
		}
И где тут trait function ?
traceThis - trait method.
traceThisFn - trait slot.
Я смотрел исходники flashDevelop там trait function не используется, с чего бы это ?

Старый 19.11.2014, 12:00
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 6  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>>Я смотрел исходники flashDevelop там trait function не используется, с чего бы это ?
ну вообще-то он на шарпе написан, какое отношение его исходники имеют к AVM2 не очень понятно,
вы бы может все-таки прояснили с какой целью интересуетесь..

Старый 19.11.2014, 13:50
XCxfwddDgg вне форума Посмотреть профиль Отправить личное сообщение для XCxfwddDgg Найти все сообщения от XCxfwddDgg
  № 7  
Ответить с цитированием
XCxfwddDgg

Регистрация: Nov 2014
Сообщений: 3
Цитата:
ну вообще-то он на шарпе написан
И что ?
Цитата:
какое отношение его исходники имеют к AVM2
Прямое.
Цитата:
вы бы может все-таки прояснили с какой целью интересуетесь..
Хочу разобраться в структуре abcFile .

Старый 19.11.2014, 14:03
illuzor вне форума Посмотреть профиль Отправить личное сообщение для illuzor Найти все сообщения от illuzor
  № 8  
Ответить с цитированием
illuzor
 
Аватар для illuzor

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
XCxfwddDgg, никакого отношения fd к avm2 не имеет, это просто ide.

Старый 19.11.2014, 23:43
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>> Хочу разобраться в структуре abcFile
ага, т.е. хотелось бы найти конструкцию, которая компилится в Trait_Function, вместо Trait_Method ?
тут сори - нечем помочь, заоблачные для меня сферы, да и никакого смысла не вижу в этом ковыряться

есть еще такое крамольное предположение: может Trait_Function просто зарезервированный тип, может и нет его вовсе в актуальной версии?

Старый 20.11.2014, 03:06
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 10  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: 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;
    }
tamarin-redux\core\AbcParser.cpp
Код:
 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 не парсится и не используется

Я думаю раньше как trait_function компилировались функции, которые вне класса и в файле именованном как имя функции
например func.as
Код AS3:
package
{
	public function func():void
	{
	}
}
но затем это выпилили так как есть trait_method, можно конечно попробовать поискать первые компиляторы as3 и проверить


Последний раз редактировалось Nooob; 20.11.2014 в 03:49.
Создать новую тему Ответ Часовой пояс GMT +4, время: 15:46.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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