#famo.us
#famo.us
Вопрос:
Если у меня есть поверхность, которая содержит содержимое, включающее входные данные. Ввод, похоже, не фокусируется на щелчке.
Вот как я включаю свою поверхность.
var ConfigureView = function() {
this.initialize.apply(this, arguments);
};
_.extend(ConfigureView.prototype, {
template: templates['config'],
initialize: function( options ) {
var position = new Transitionable([0, 0]);]
var sync = new GenericSync({
"mouse" : {},
"touch" : {}
});
this.surface = new Surface({
size : [200, 200],
properties : {background : 'red'},
content: this.template()
});
// now surface's events are piped to `MouseSync`, `TouchSync` and `ScrollSync`
this.surface.pipe(sync);
sync.on('update', function(data){
var currentPosition = position.get();
position.set([
currentPosition[0] data.delta[0],
currentPosition[1] data.delta[1]
]);
});
this.positionModifier = new Modifier({
transform : function(){
var currentPosition = position.get();
return Transform.translate(currentPosition[0], currentPosition[1], 0);
}
});
var centerModifier = new Modifier({origin : [0.5, 0.5]});
centerModifier.setTransform(Transform.translate(0,0));
},
addTo: function(context) {
context = Engine.createContext()
context.add(this.positionModifier).add(this.surface);
}
});
module.exports = ConfigureView;
Что необходимо для нормальной работы с формами famo.us ?
Или мне просто нужно иметь внутреннюю поверхность с другим слушателем?
Это шаблоны [‘config’]:
templates["config"] = Handlebars.template({"compiler":[5,">= 2.0.0"],"main":function(depth0,helpers,partials,data) {
return "<input type="text" id="fontSize" >";
},"useData":true});
То, что отображается, является вводом, я просто не могу сосредоточиться на нем.
Обновить
Причина, по которой, я думаю, я не мог сосредоточиться, заключалась в том, что я не использовал inputSurface, а событие surface удалялось. Используя ScrollView, я смог заставить его работать.
var ConfigureView = function() {
this.initialize.apply(this, arguments);
};
_.extend(ConfigureView.prototype, {
template: templates['config'],
initialize: function( options ) {
this.app = options.app;
var position = new Transitionable([0, 0, 1000]);
this.scrollView = new ScrollView();
var surfaces = [];
this.scrollView.sequenceFrom(surfaces);
// create a sync from the registered SYNC_IDs
// here we define default options for `mouse` and `touch` while
// scrolling sensitivity is scaled down
var sync = new GenericSync({
"mouse" : {},
"touch" : {}
});
this.surface = new Surface({
size : [200, 200],
properties : {background : 'red'},
content: this.template()
});
surfaces.push(this.surface);
this.offsetMod = new Modifier({ origin: [0.2,0,2]});
this.inner = new Surface({
size : [100, 100],
properties : {background : 'gray'},
content: this.template()
});
surfaces.push(this.inner);
// now surface's events are piped to `MouseSync`, `TouchSync` and `ScrollSync`
this.surface.pipe(sync);
this.inputsFontSize = new InputSurface({
classes: ['login-form'],
content: '',
size: [300, 40],
placeholder:'email',
properties: {
autofocus:'autofocus',
maxLength:'5',
textAlign: 'left'
}
});
sync.on('update', function(data){
var currentPosition = position.get();
position.set([
currentPosition[0] data.delta[0],
currentPosition[1] data.delta[1]
]);
});
this.positionModifier = new Modifier({
transform : function(){
var currentPosition = position.get();
return Transform.translate(currentPosition[0], currentPosition[1], 0);
}
});
var centerModifier = new Modifier({origin : [0.5, 0.5]});
centerModifier.setTransform(Transform.translate(0,0));//, y, z))
},
addTo: function(context) {
context = Engine.createContext();
context.add(this.positionModifier).add(this.scrollView);
}
});
module.exports = ConfigureView;
Комментарии:
1. Можете ли вы показать нам шаблоны [‘config’], я не могу заставить ваш пример «не работать»
2. Я включил шаблон, что произойдет, если у вас будет больше, чем в контексте?
3. Да, все еще не вижу никаких проблем с тем, что вы показываете. Теперь, когда вы спрашиваете, ваша функция addTo создает контекст при каждом вызове? Вы должны стараться иметь только один контекст, примером, в котором можно использовать два, является 3D-представление с каким-то 2D HUD..
4. Причина addTo заключается в создании контента, потому что я хочу иметь поведение двух контекстов. Тот, у которого есть макет, и тот, который является подвижной поверхностью с входными данными. Я делаю это неправильно? Есть ли какая-либо документация, которую я должен просмотреть?