【发布时间】:2016-04-25 00:17:46
【问题描述】:
我尝试重新创建一个类似 Tinder 的函数。
我找到了这段代码:
var win = Titanium.UI.createWindow({
backgroundColor: "#ffffff",
title: "win"
});
// animations
var animateLeft = Ti.UI.createAnimation({
left: -520,
transform: Ti.UI.create2DMatrix({rotate: 60}),
opacity: 0,
duration: 300
});
var animateRight = Ti.UI.createAnimation({
left: 520,
transform: Ti.UI.create2DMatrix({rotate: -60}),
opacity: 0,
duration: 300
});
var curX = 0;
win.addEventListener('touchstart', function (e) {
curX = parseInt(e.x, 10);
});
win.addEventListener('touchmove', function (e) {
if (!e.source.id || e.source.id !== 'oferta') {
return;
}
// Subtracting current position to starting horizontal position
var coordinates = parseInt(e.x, 10) - curX;
// Defining coordinates as the final left position
var matrix = Ti.UI.create2DMatrix({rotate: -(coordinates / 10)});
var animate = Ti.UI.createAnimation({
left: coordinates,
transform: matrix,
duration: 20
});
e.source.animate(animate);
e.source.left = coordinates;
});
win.addEventListener('touchend', function (e) {
if (!e.source.id || e.source.id !== 'oferta') {
return;
}
// No longer moving the window
if (e.source.left >= 75) {
e.source.animate(animateRight);
} else if (e.source.left <= -75) {
e.source.animate(animateLeft);
} else {
// Repositioning the window to the left
e.source.animate({
left: 0,
transform: Ti.UI.create2DMatrix({rotate: 0}),
duration: 300
});
}
});
for (var i = 0; i < 10; i++) {
var wrap = Ti.UI.createView({
"id": 'oferta',
"width": 320,
"height": 400,
"backgroundColor": (i % 2 == 0 ? "red" : "blue")
});
var text = Ti.UI.createLabel({
text: "row: " + i,
color: "black"
});
wrap.add(text);
win.add(wrap);
}
win.open();
但是有一个奇怪的行为。 确实,当我从顶部获取 wrap 视图时,一切都很好,但是如果我将手指放在 wrap 视图的底部,图像就会变得疯狂..
试试代码,你会看到奇怪的行为。
我使用 Titanium SDK 5.2.2 和 iPhone 6 上的 iOS 9.3.1。
这里有一段视频展示了奇怪的事情:http://tinypic.com/player.php?v=x37d5u%3E&s=9#.Vx_zDaOLQb0
(抱歉视频大小) 感谢您的帮助
【问题讨论】:
-
“类似 Tinder 的函数” - 这是什么意思?你想生火吗?
-
“疯狂”是什么意思?
-
如果您可以分享您的屏幕/设备的视频录制会有所帮助
-
这是视频:这是一个展示奇怪事物的视频:tinypic.com/player.php?v=x37d5u%3E&s=9#.Vx_zDaOLQb0(抱歉视频大小)
-
你应该使用自定义的原生模块,而不是检查触摸事件,因为这样性能很差。
标签: javascript appcelerator appcelerator-titanium tinder