我正在使用Sencha Touch 2创建一个HTML5应用程序,以在iPhone上运行UIWebview。
我创建了几种方法来帮助自己进行css动画。其中一种可以在Y轴上进行平移。我在我的CSS中设置了像-webkit-backface-visibility这样的东西来帮助平滑动画。我尝试过webkit perspective和webkit preserve-3d,但似乎没有帮助。
无论如何,我已经让动画非常流畅了。问题是,如果我同时平移大量元素中的一个元素,则其中一个元素将不会被平移。
假设我将A、B、C、D、E和F向上平移。F将直接跳到最后一个位置——没有平移。这几乎就像-webkit-transform在-webkit-transition-duration之前设置一样,但这并不是我的代码中发生的事情。另外,A、B、C、D和E的动画表现完美。
我甚至尝试通过动态创建一个元素,并将其嵌入DOM中,并将该元素的类等于该转换和持续时间的新类样式来修复它。我得到了同样的问题。
问题在于,如果我在setTimeout函数中嵌入Animations.translateY的最后一行,即使延迟1毫秒,所有内容也都会动画化。然而,这会导致屏幕33%左右的时间闪烁严重,我猜这是由于setTimeout太多?
至于浏览器的一致性,在我的PC上的Chrome和iPhone设备上的UIWebview中都看到了缺少动画(没有setTimeout)。我只在iPhone设备上看到闪烁(有setTimeout)。
动画回调代码...我认为这与主题无关,因为回调从未实际触发(持续时间为0秒的动画不会触发回调)。
我创建了几种方法来帮助自己进行css动画。其中一种可以在Y轴上进行平移。我在我的CSS中设置了像-webkit-backface-visibility这样的东西来帮助平滑动画。我尝试过webkit perspective和webkit preserve-3d,但似乎没有帮助。
无论如何,我已经让动画非常流畅了。问题是,如果我同时平移大量元素中的一个元素,则其中一个元素将不会被平移。
假设我将A、B、C、D、E和F向上平移。F将直接跳到最后一个位置——没有平移。这几乎就像-webkit-transform在-webkit-transition-duration之前设置一样,但这并不是我的代码中发生的事情。另外,A、B、C、D和E的动画表现完美。
我甚至尝试通过动态创建一个元素,并将其嵌入DOM中,并将该元素的类等于该转换和持续时间的新类样式来修复它。我得到了同样的问题。
问题在于,如果我在setTimeout函数中嵌入Animations.translateY的最后一行,即使延迟1毫秒,所有内容也都会动画化。然而,这会导致屏幕33%左右的时间闪烁严重,我猜这是由于setTimeout太多?
至于浏览器的一致性,在我的PC上的Chrome和iPhone设备上的UIWebview中都看到了缺少动画(没有setTimeout)。我只在iPhone设备上看到闪烁(有setTimeout)。
Animations.translateY = function(element, measurement, duration, callback, easing)
{
Animations.setAnimationCallback(element,callback)
var css = "translate3d(0,"+measurement+",0)";
duration = parseFloat(duration);
element.style['-webkit-transition-duration'] = duration + 's';
element.style['-webkit-transform'] = css
}
动画回调代码...我认为这与主题无关,因为回调从未实际触发(持续时间为0秒的动画不会触发回调)。
Animations.setAnimationCallback = function(element, callback)
{
//set callback handler
element.addEventListener('webkitTransitionEnd',
function(){
//set animation duration back to 0
this.style['-webkit-transition-duration'] = "0s";
if(callback != null)
{
callback();
}
this.removeEventListener('webkitTransitionEnd', arguments.callee, null);
});
}