Я приехал сюда в поисках тот же ответ, "Как продлить компонент". Я хотел написать некоторую пользовательскую логику для компонента look-controls, поэтому я расскажу о том, что я узнал о расширении компонентов.
Прежде всего, я рекомендовал бы сделать копию на компоненте, чтобы избежать повреждения исходного компонента (на всякий случай, если вы используете его в другом месте). Я использую Angular, поэтому у меня есть хорошая утилита для deep copy, но вы можете использовать все, что захотите. (Похоже, что у A-Frame есть некоторые утилиты, которые могут это сделать, но нет документов о том, как их использовать: AFRAME.utils.extend, AFRAME.utils.extendDeep). Копирование зависит от вас.
В любом случае, вот как вы можете продлить существующий компонент:
// Get a copy of the original component.
var customLookControls = angular.copy(AFRAME.components['look-controls']),
customLookControlsComponent = customLookControls.Component;
// Add your custom logic to component.
customLookControlsComponent.prototype.myNewMethod = function() { // Something awesome. };
Вот как вы регистр это:
AFRAME.registerComponent('custom-look-controls', customLookControls);
И, наконец, вот как вы бы использование it:
<a-entity custom-look-controls></a-entity>
UPDATE
Локально я обнаружил, что создание нового компонента на основе офф уже существующего, не работает так, как я ожидал, что это. Так, в гораздо более простой способ, я обнаружил, что это довольно легко расширить существующий компонент:
// Get a reference to the component we want to extend.
var lookControls = AFRAME.components['look-controls'],
lookControlsComponent = lookControls.Component;
/**
* Overrides the Touch event handler...
* @param {!Event} e The touch event object.
*/
lookControlsComponent.prototype.onTouchMove = function(e) {
// Replace the TouchMove event handler...
};
/**
* New/custom method...
*/
lookControlsComponent.prototype.somethingNew = function() {
// My awesome logic here.
};
Я не использую угловой, но пока это лучший ответ, поэтому я дам вам правильный ответ, чтобы любой, кто мог бы решить их проблему – msj121
Надеюсь, это поможет, это было немного копать, но вне части _copy_, которая не требуется, этого должно быть достаточно.Он хорошо работал для моих целей :-) – JohnnyCoder