Я хочу сделать список прокрутки с кучей поверхностных изображений. Затем, когда я click
или touch
на поверхности, я хочу, чтобы объект surface
был затронут и что-то с ним сделал (например, изменение content
).Получить GenericSync на поверхность или просмотр
Способ, которым я устанавливаю ниже, состоит в том, чтобы иметь scrollview -> container -> view -> modifier -> surface
. Я не знаю, эффективен он или нет (может быть, лишний). Но я не могу получить точное событие запуска объекта в console.log(data)
каждого объекта sync
.
define(function(require, exports, module) {
var Engine = require('famous/core/Engine');
var Surface = require('famous/core/Surface');
var ContainerSurface = require("famous/surfaces/ContainerSurface");
var View = require('famous/core/View');
var Scrollview = require('famous/views/Scrollview');
var Transform = require('famous/core/Transform');
var Modifier = require("famous/core/Modifier");
var GenericSync = require("famous/inputs/GenericSync");
var MouseSync = require("famous/inputs/MouseSync");
var TouchSync = require("famous/inputs/TouchSync");
var mainContext = Engine.createContext();
GenericSync.register({
"mouse" : MouseSync,
"touch" : TouchSync
});
var scrollview = new Scrollview({});
var listContainer = [];
var questionContainer = [];
var imgSurface = [];
var sync = [];
var imgModifier = new Modifier({origin: [0.5, 0.5]});
for (var i=0; i<10; i++) {
questionContainer[i] = new ContainerSurface({
size: [undefined, 300],
properties:{
overflow: 'hidden'
}
});
imgSurface[i] = new Surface({
content: '<img width="100%" src="http://placehold.it/400x300">'
});
sync[i] = new GenericSync(
["mouse", "touch"],
{direction : GenericSync.DIRECTION_X}
);
questionContainer[i].add(imgModifier).add(imgSurface[i]);
questionContainer[i].pipe(sync[i]);
questionContainer[i].pipe(scrollview);
sync[i].on("end", function(data) {
console.log(data);
});
listContainer.push(questionContainer[i]);
}
scrollview.sequenceFrom(listContainer);
mainContext.add(scrollview);
});
Так как я могу получить доступ инициирующее surface
или view
в этом случае? Я надеялся получить что-то вроде data.triggerObject.setContent()
, ссылающееся на то, что указано в surface
в массиве. Ну, такая, что, кажется, не существует ...
UPDATE 1:
Ответ не должен следовать мой код выше. Голы «высокого уровня»:
Создайте список поверхностей с изображениями. Данные из некоторого массива.
Detect нажмите и сенсорным событием на поверхности и сделать что-то с этой поверхностью
В принципе, я пытался сделать «авансовый» версию этого примера https://github.com/Famous/examples/blob/master/src/examples/core/View/example.js
Моя цель - определить, какая поверхность нажимает/нажимает. Это должно быть так сложно? Есть ли обходной путь для этой же цели?Он не должен следовать моему коду выше. Я обновил вопрос выше. –
Так что мне нужно сделать 'surface.on ('touchstart', function (e) {});' и 'surface.on ('click', function (e) {});' отдельно? Потому что я не думаю, что Famo.us может делать комбинированные события в списке, например, «touchstart click»? –
Да, он еще не может делать комбинированные события. Просто определите одну функцию и привяжите к каждому событию. Опять же, вы, возможно, не захотите применять оба для сенсорных устройств, или один и тот же код может быть запущен дважды. – johntraver