Sencha touch 2.4 appLoadingIndicator stack on android 2.3
Posted
技术标签:
【中文标题】Sencha touch 2.4 appLoadingIndicator stack on android 2.3【英文标题】: 【发布时间】:2014-09-15 10:06:53 【问题描述】:我刚刚下载了 sencha touch 2.4 并创建了一个测试 android 应用程序。我能够毫无问题地在 android 4+ 上编译和运行该应用程序。但是,当我尝试在 android 2.3 上运行它时,该应用程序没有通过应用程序加载器指示器,并且我记录了该过程,没有显示任何错误。以下是代码:
Ext.application(
name: 'Voice',
requires: [
'Ext.MessageBox'
],
views: [
'Main'
],
icon:
'57': 'resources/icons/Icon.png',
'72': 'resources/icons/Icon~ipad.png',
'114': 'resources/icons/Icon@2x.png',
'144': 'resources/icons/Icon~ipad@2x.png'
,
isIconPrecomposed: true,
startupImage:
'320x460': 'resources/startup/320x460.jpg',
'640x920': 'resources/startup/640x920.png',
'768x1004': 'resources/startup/768x1004.png',
'748x1024': 'resources/startup/748x1024.png',
'1536x2008': 'resources/startup/1536x2008.png',
'1496x2048': 'resources/startup/1496x2048.png'
,
launch: function()
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
// Initialize the main view
Ext.Viewport.add(Ext.create('Voice.view.Main'));
,
onUpdated: function()
Ext.Msg.confirm(
"Application Update",
"This application has just successfully been updated to the latest version. Reload now?",
function(buttonId)
if (buttonId === 'yes')
window.location.reload();
);
);
及主要代码:
Ext.define('Voice.view.Main',
extend: 'Ext.tab.Panel',
xtype: 'main',
requires: [
'Ext.TitleBar',
'Ext.Video'
],
config:
tabBarPosition: 'bottom',
items: [
title: 'Welcome',
iconCls: 'home',
scrollable: true,
items: [
docked: 'top',
xtype: 'titlebar',
title: 'Welcome to Sencha Touch 2'
]
,
title: 'Get Started',
iconCls: 'action',
items: [
docked: 'top',
xtype: 'titlebar',
title: 'Getting Started'
,
xtype: 'video',
url: 'http://av.vimeo.com/64284/137/87347327.mp4?token=1330978144_f9b698fea38cd408d52a2393240c896c',
posterUrl: 'http://b.vimeocdn.com/ts/261/062/261062119_640.jpg'
]
]
);
我想这一定是2.4 sencha touch 版本的bug
【问题讨论】:
【参考方案1】:我们也遇到了同样的问题,这似乎是 Sencha Touch 2.4 中引入的错误。 原因是使用了 bind() 方法,它是 ECMAScript 5 的一部分,在 android 2.3 上不支持
所以要修复它,你可以找到文件 touch\src\event\publisher\TouchGesture.js 并替换以下行
if (Ext.feature.has.Touch)
// bind handlers that are only invoked when the browser has touchevents
me.onTargetTouchMove = me.onTargetTouchMove.bind(me);
me.onTargetTouchEnd = me.onTargetTouchEnd.bind(me);
这些
if (Ext.feature.has.Touch)
// bind handlers that are only invoked when the browser has touchevents
me.onTargetTouchMove = Ext.Function.bind(me.onTargetTouchMove, me);
me.onTargetTouchEnd = Ext.Function.bind(me.onTargetTouchEnd, me);
这个解决方案帮助我们避免了这个问题
【讨论】:
您好,感谢您的更新。我尝试了我在网上遇到的其他建议,但他们对其他问题提出了问题。所以我选择使用 sencha touch 2.3.1,它的表现非常好。我将在下周尝试您的解决方案,并相应地更新您。非常感谢您的宝贵时间和反馈 您好,感谢您的代码!它就像魅力一样。不过我注意到一件事,字体有点脆,与 2.3.1 版相比,边框线也没有那么平滑.. 砰的一声!! 嗨!很高兴看到它对您有所帮助。如果您使用字段集和默认主题,您可能还会注意到标签部分有白色背景,这有点烦人,因为字段输入元素从哪里开始并不明显以上是关于Sencha touch 2.4 appLoadingIndicator stack on android 2.3的主要内容,如果未能解决你的问题,请参考以下文章
Sencha Touch - sencha touch js 大小的性能问题
如何使用 sencha-touch.jsb3 构建 Sencha Touch?
Sencha Touch实战OA系统开发|Sencha Touch项目教程
将 Sencha Architect 项目从 Sencha Touch v2.0.x 更新到 Sencha Touch 2.1.x